(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_20 (Apple Inc.) Main-Class: Test8
public class Test8 {
public static void main(String[] args) {
List[] ls = { List.mk(args.length), List.mk(args.length), List.mk(args.length) };

test(ls, ls.length - 1);
}

private static void test(List[] ls, int start) {
if (start >= 0) {
int len = length(ls[start]);
for (int i = 0; i < len; i++)
bubble(ls[start]);

test(ls, start - 1);
}
}

private static void bubble(List l) {
if (l == null || l.getTail() == null)
return;

if (l.head > l.getTail().head) {
int temp = l.head;
l.head = l.getTail().head;
l.getTail().head = temp;
}

bubble(l.getTail());
}

private static int length(List list) {
if (list == null)
return 0;
else
return 1 + length(list.getTail());
}
}

public class List {
public int head;
private List tail;

public List(int head, List tail) {
this.head = head;
this.tail = tail;
}

public List getTail() {
return tail;
}

public static List mk(int len) {
List result = null;

while (len-- > 0)
result = new List(len, result);

return result;
}
}

(1) JBCToGraph (SOUND transformation)

Constructed TerminationGraph.

(2) Obligation:

Termination Graph based on JBC Program:
Test8.main([Ljava/lang/String;)V: Graph of 144 nodes with 3 SCCs.

Test8.test([LList;I)V: Graph of 84 nodes with 1 SCC.

Test8.length(LList;)I: Graph of 89 nodes with 0 SCCs.

Test8.bubble(LList;)V: Graph of 89 nodes with 0 SCCs.


(3) TerminationGraphToSCCProof (SOUND transformation)

Splitted TerminationGraph to 6 SCCss.

(4) Complex Obligation (AND)

(5) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Test8.bubble(LList;)V
SCC calls the following helper methods: Test8.bubble(LList;)V
Performed SCC analyses: UsedFieldsAnalysis

(6) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 82 rules for P and 11 rules for R.


P rules:
4388_0_bubble_NULL(EOS(STATIC_4388), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4389_0_bubble_NULL(EOS(STATIC_4389), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4389_0_bubble_NULL(EOS(STATIC_4389), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4392_0_bubble_Load(EOS(STATIC_4392), java.lang.Object(o6546sub))
4392_0_bubble_Load(EOS(STATIC_4392), java.lang.Object(o6546sub)) → 4394_0_bubble_InvokeMethod(EOS(STATIC_4394), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4394_0_bubble_InvokeMethod(EOS(STATIC_4394), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4397_0_getTail_Load(EOS(STATIC_4397), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4397_0_getTail_Load(EOS(STATIC_4397), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4406_0_getTail_FieldAccess(EOS(STATIC_4406), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4406_0_getTail_FieldAccess(EOS(STATIC_4406), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4410_0_getTail_FieldAccess(EOS(STATIC_4410), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4406_0_getTail_FieldAccess(EOS(STATIC_4406), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4411_0_getTail_FieldAccess(EOS(STATIC_4411), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4410_0_getTail_FieldAccess(EOS(STATIC_4410), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4413_0_getTail_FieldAccess(EOS(STATIC_4413), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4410_0_getTail_FieldAccess(EOS(STATIC_4410), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4414_0_getTail_FieldAccess(EOS(STATIC_4414), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4413_0_getTail_FieldAccess(EOS(STATIC_4413), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4422_0_getTail_FieldAccess(EOS(STATIC_4422), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4413_0_getTail_FieldAccess(EOS(STATIC_4413), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4423_0_getTail_FieldAccess(EOS(STATIC_4423), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4422_0_getTail_FieldAccess(EOS(STATIC_4422), java.lang.Object(List(o6588sub, o6589, i2129)), java.lang.Object(List(o6588sub, o6589, i2129)), java.lang.Object(List(o6588sub, o6589, i2129))) → 4428_0_getTail_FieldAccess(EOS(STATIC_4428), java.lang.Object(List(o6588sub, o6589, i2129)), java.lang.Object(List(o6588sub, o6589, i2129)), java.lang.Object(List(o6588sub, o6589, i2129)))
4428_0_getTail_FieldAccess(EOS(STATIC_4428), java.lang.Object(List(o6588sub, o6589, i2129)), java.lang.Object(List(o6588sub, o6589, i2129)), java.lang.Object(List(o6588sub, o6589, i2129))) → 4438_0_getTail_Return(EOS(STATIC_4438), java.lang.Object(List(o6588sub, o6589, i2129)), java.lang.Object(List(o6588sub, o6589, i2129)), o6589)
4438_0_getTail_Return(EOS(STATIC_4438), java.lang.Object(List(o6588sub, o6589, i2129)), java.lang.Object(List(o6588sub, o6589, i2129)), o6589) → 4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(o6588sub, o6589, i2129)), o6589)
4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), java.lang.Object(o6632sub)) → 4451_0_bubble_NONNULL(EOS(STATIC_4451), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), java.lang.Object(o6632sub))
4451_0_bubble_NONNULL(EOS(STATIC_4451), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), java.lang.Object(o6632sub)) → 4455_0_bubble_Load(EOS(STATIC_4455), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)))
4455_0_bubble_Load(EOS(STATIC_4455), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129))) → 4460_0_bubble_FieldAccess(EOS(STATIC_4460), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)))
4460_0_bubble_FieldAccess(EOS(STATIC_4460), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129))) → 4465_0_bubble_Load(EOS(STATIC_4465), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129)
4465_0_bubble_Load(EOS(STATIC_4465), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129) → 4468_0_bubble_InvokeMethod(EOS(STATIC_4468), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)))
4468_0_bubble_InvokeMethod(EOS(STATIC_4468), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129))) → 4472_0_getTail_Load(EOS(STATIC_4472), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)))
4472_0_getTail_Load(EOS(STATIC_4472), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129))) → 4476_0_getTail_FieldAccess(EOS(STATIC_4476), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)))
4476_0_getTail_FieldAccess(EOS(STATIC_4476), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129))) → 4482_0_getTail_Return(EOS(STATIC_4482), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), java.lang.Object(o6632sub))
4482_0_getTail_Return(EOS(STATIC_4482), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), java.lang.Object(o6632sub)) → 4486_0_bubble_FieldAccess(EOS(STATIC_4486), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub))
4486_0_bubble_FieldAccess(EOS(STATIC_4486), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub)) → 4491_0_bubble_FieldAccess(EOS(STATIC_4491), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub))
4486_0_bubble_FieldAccess(EOS(STATIC_4486), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub)) → 4492_0_bubble_FieldAccess(EOS(STATIC_4492), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub))
4491_0_bubble_FieldAccess(EOS(STATIC_4491), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub)) → 4499_0_bubble_FieldAccess(EOS(STATIC_4499), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub))
4491_0_bubble_FieldAccess(EOS(STATIC_4491), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub)) → 4500_0_bubble_FieldAccess(EOS(STATIC_4500), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub))
4499_0_bubble_FieldAccess(EOS(STATIC_4499), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub)) → 4509_0_bubble_FieldAccess(EOS(STATIC_4509), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub))
4499_0_bubble_FieldAccess(EOS(STATIC_4499), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub)) → 4510_0_bubble_FieldAccess(EOS(STATIC_4510), java.lang.Object(List(o6588sub, java.lang.Object(o6632sub), i2129)), i2129, java.lang.Object(o6632sub))
4509_0_bubble_FieldAccess(EOS(STATIC_4509), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(EOC, o6706, i2144))) → 4521_0_bubble_FieldAccess(EOS(STATIC_4521), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(EOC, o6706, i2144)))
4521_0_bubble_FieldAccess(EOS(STATIC_4521), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(EOC, o6706, i2144))) → 4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, i2144)
4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, i2144) → 4543_0_bubble_LE(EOS(STATIC_4543), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, i2144)
4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, i2144) → 4544_0_bubble_LE(EOS(STATIC_4544), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, i2144)
4543_0_bubble_LE(EOS(STATIC_4543), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, i2144) → 4547_0_bubble_Load(EOS(STATIC_4547), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129))) | <=(i2129, i2144)
4547_0_bubble_Load(EOS(STATIC_4547), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129))) → 4628_0_bubble_Load(EOS(STATIC_4628), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)))
4628_0_bubble_Load(EOS(STATIC_4628), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144))) → 4631_0_bubble_InvokeMethod(EOS(STATIC_4631), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144)))
4631_0_bubble_InvokeMethod(EOS(STATIC_4631), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144))) → 4635_0_getTail_Load(EOS(STATIC_4635), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144)))
4635_0_getTail_Load(EOS(STATIC_4635), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144))) → 4637_0_getTail_FieldAccess(EOS(STATIC_4637), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144)))
4637_0_getTail_FieldAccess(EOS(STATIC_4637), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144))) → 4639_0_getTail_Return(EOS(STATIC_4639), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144)), java.lang.Object(List(EOC, o6706, i2129)))
4639_0_getTail_Return(EOS(STATIC_4639), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144)), java.lang.Object(List(EOC, o6706, i2129))) → 4640_0_bubble_InvokeMethod(EOS(STATIC_4640), java.lang.Object(List(EOC, o6706, i2129)))
4640_0_bubble_InvokeMethod(EOS(STATIC_4640), java.lang.Object(List(EOC, o6706, i2129))) → 4641_1_bubble_InvokeMethod(4641_0_bubble_Load(EOS(STATIC_4641), java.lang.Object(List(EOC, o6706, i2129))), java.lang.Object(List(EOC, o6706, i2129)))
4641_0_bubble_Load(EOS(STATIC_4641), java.lang.Object(List(EOC, o6706, i2129))) → 4642_0_bubble_Load(EOS(STATIC_4642), java.lang.Object(List(EOC, o6706, i2129)))
4642_0_bubble_Load(EOS(STATIC_4642), java.lang.Object(List(EOC, o6706, i2129))) → 4387_0_bubble_Load(EOS(STATIC_4387), java.lang.Object(List(EOC, o6706, i2129)))
4387_0_bubble_Load(EOS(STATIC_4387), o6540) → 4388_0_bubble_NULL(EOS(STATIC_4388), o6540, o6540)
4544_0_bubble_LE(EOS(STATIC_4544), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, i2144) → 4548_0_bubble_Load(EOS(STATIC_4548), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129))) | >(i2129, i2144)
4548_0_bubble_Load(EOS(STATIC_4548), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129))) → 4554_0_bubble_FieldAccess(EOS(STATIC_4554), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)))
4554_0_bubble_FieldAccess(EOS(STATIC_4554), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129))) → 4557_0_bubble_Store(EOS(STATIC_4557), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129)
4557_0_bubble_Store(EOS(STATIC_4557), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129) → 4558_0_bubble_Load(EOS(STATIC_4558), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129)
4558_0_bubble_Load(EOS(STATIC_4558), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129) → 4561_0_bubble_Load(EOS(STATIC_4561), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)))
4561_0_bubble_Load(EOS(STATIC_4561), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129))) → 4564_0_bubble_InvokeMethod(EOS(STATIC_4564), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)))
4564_0_bubble_InvokeMethod(EOS(STATIC_4564), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129))) → 4567_0_getTail_Load(EOS(STATIC_4567), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)))
4567_0_getTail_Load(EOS(STATIC_4567), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129))) → 4571_0_getTail_FieldAccess(EOS(STATIC_4571), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)))
4571_0_getTail_FieldAccess(EOS(STATIC_4571), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129))) → 4573_0_getTail_Return(EOS(STATIC_4573), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(EOC, o6706, i2144)))
4573_0_getTail_Return(EOS(STATIC_4573), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(EOC, o6706, i2144))) → 4578_0_bubble_FieldAccess(EOS(STATIC_4578), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(EOC, o6706, i2144)))
4578_0_bubble_FieldAccess(EOS(STATIC_4578), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), java.lang.Object(List(EOC, o6706, i2144))) → 4582_0_bubble_FieldAccess(EOS(STATIC_4582), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2144)
4582_0_bubble_FieldAccess(EOS(STATIC_4582), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2129)), i2144) → 4584_0_bubble_Load(EOS(STATIC_4584), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129)
4584_0_bubble_Load(EOS(STATIC_4584), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129) → 4587_0_bubble_InvokeMethod(EOS(STATIC_4587), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)))
4587_0_bubble_InvokeMethod(EOS(STATIC_4587), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144))) → 4591_0_getTail_Load(EOS(STATIC_4591), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)))
4591_0_getTail_Load(EOS(STATIC_4591), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144))) → 4598_0_getTail_FieldAccess(EOS(STATIC_4598), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)))
4598_0_getTail_FieldAccess(EOS(STATIC_4598), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144))) → 4603_0_getTail_Return(EOS(STATIC_4603), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), java.lang.Object(List(EOC, o6706, i2144)))
4603_0_getTail_Return(EOS(STATIC_4603), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129, java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), java.lang.Object(List(EOC, o6706, i2144))) → 4609_0_bubble_Load(EOS(STATIC_4609), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129, java.lang.Object(List(EOC, o6706, i2144)))
4609_0_bubble_Load(EOS(STATIC_4609), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), i2129, java.lang.Object(List(EOC, o6706, i2144))) → 4619_0_bubble_FieldAccess(EOS(STATIC_4619), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), java.lang.Object(List(EOC, o6706, i2144)), i2129)
4619_0_bubble_FieldAccess(EOS(STATIC_4619), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2144)), i2144)), java.lang.Object(List(EOC, o6706, i2144)), i2129) → 4628_0_bubble_Load(EOS(STATIC_4628), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6706, i2129)), i2144)))
4510_0_bubble_FieldAccess(EOS(STATIC_4510), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6708, i2145)), i2129)), i2129, java.lang.Object(List(EOC, o6708, i2145))) → 4522_0_bubble_FieldAccess(EOS(STATIC_4522), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6708, i2145)), i2129)), i2129, java.lang.Object(List(EOC, o6708, i2145)))
4522_0_bubble_FieldAccess(EOS(STATIC_4522), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6708, i2145)), i2129)), i2129, java.lang.Object(List(EOC, o6708, i2145))) → 4538_0_bubble_LE(EOS(STATIC_4538), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6708, i2145)), i2129)), i2129, i2145)
4538_0_bubble_LE(EOS(STATIC_4538), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6708, i2145)), i2129)), i2129, i2145) → 4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6708, i2145)), i2129)), i2129, i2145)
4500_0_bubble_FieldAccess(EOS(STATIC_4500), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6685, i2142)), i2129)), i2129, java.lang.Object(List(EOC, o6685, i2142))) → 4512_0_bubble_FieldAccess(EOS(STATIC_4512), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6685, i2142)), i2129)), i2129, java.lang.Object(List(EOC, o6685, i2142)))
4512_0_bubble_FieldAccess(EOS(STATIC_4512), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6685, i2142)), i2129)), i2129, java.lang.Object(List(EOC, o6685, i2142))) → 4525_0_bubble_LE(EOS(STATIC_4525), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6685, i2142)), i2129)), i2129, i2142)
4525_0_bubble_LE(EOS(STATIC_4525), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6685, i2142)), i2129)), i2129, i2142) → 4513_0_bubble_LE(EOS(STATIC_4513), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6685, i2142)), i2129)), i2129, i2142)
4513_0_bubble_LE(EOS(STATIC_4513), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6671, i2139)), i2129)), i2129, i2139) → 4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6671, i2139)), i2129)), i2129, i2139)
4492_0_bubble_FieldAccess(EOS(STATIC_4492), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6671, i2139)), i2129)), i2129, java.lang.Object(List(EOC, o6671, i2139))) → 4501_0_bubble_FieldAccess(EOS(STATIC_4501), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6671, i2139)), i2129)), i2129, java.lang.Object(List(EOC, o6671, i2139)))
4501_0_bubble_FieldAccess(EOS(STATIC_4501), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6671, i2139)), i2129)), i2129, java.lang.Object(List(EOC, o6671, i2139))) → 4513_0_bubble_LE(EOS(STATIC_4513), java.lang.Object(List(o6588sub, java.lang.Object(List(EOC, o6671, i2139)), i2129)), i2129, i2139)
4423_0_getTail_FieldAccess(EOS(STATIC_4423), java.lang.Object(List(EOC, o6591, i2130)), java.lang.Object(List(EOC, o6591, i2130)), java.lang.Object(List(EOC, o6591, i2130))) → 4429_0_getTail_FieldAccess(EOS(STATIC_4429), java.lang.Object(List(EOC, o6591, i2130)), java.lang.Object(List(EOC, o6591, i2130)), java.lang.Object(List(EOC, o6591, i2130)))
4429_0_getTail_FieldAccess(EOS(STATIC_4429), java.lang.Object(List(EOC, o6591, i2130)), java.lang.Object(List(EOC, o6591, i2130)), java.lang.Object(List(EOC, o6591, i2130))) → 4439_0_getTail_Return(EOS(STATIC_4439), java.lang.Object(List(EOC, o6591, i2130)), java.lang.Object(List(EOC, o6591, i2130)), o6591)
4439_0_getTail_Return(EOS(STATIC_4439), java.lang.Object(List(EOC, o6591, i2130)), java.lang.Object(List(EOC, o6591, i2130)), o6591) → 4446_0_bubble_NONNULL(EOS(STATIC_4446), java.lang.Object(List(EOC, o6591, i2130)), o6591)
4446_0_bubble_NONNULL(EOS(STATIC_4446), java.lang.Object(List(EOC, o6591, i2130)), o6591) → 4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(EOC, o6591, i2130)), o6591)
4414_0_getTail_FieldAccess(EOS(STATIC_4414), java.lang.Object(List(EOC, o6583, i2128)), java.lang.Object(List(EOC, o6583, i2128)), java.lang.Object(List(EOC, o6583, i2128))) → 4424_0_getTail_FieldAccess(EOS(STATIC_4424), java.lang.Object(List(EOC, o6583, i2128)), java.lang.Object(List(EOC, o6583, i2128)), java.lang.Object(List(EOC, o6583, i2128)))
4424_0_getTail_FieldAccess(EOS(STATIC_4424), java.lang.Object(List(EOC, o6583, i2128)), java.lang.Object(List(EOC, o6583, i2128)), java.lang.Object(List(EOC, o6583, i2128))) → 4431_0_getTail_Return(EOS(STATIC_4431), java.lang.Object(List(EOC, o6583, i2128)), java.lang.Object(List(EOC, o6583, i2128)), o6583)
4431_0_getTail_Return(EOS(STATIC_4431), java.lang.Object(List(EOC, o6583, i2128)), java.lang.Object(List(EOC, o6583, i2128)), o6583) → 4438_0_getTail_Return(EOS(STATIC_4438), java.lang.Object(List(EOC, o6583, i2128)), java.lang.Object(List(EOC, o6583, i2128)), o6583)
4411_0_getTail_FieldAccess(EOS(STATIC_4411), java.lang.Object(List(EOC, o6565, i2123)), java.lang.Object(List(EOC, o6565, i2123)), java.lang.Object(List(EOC, o6565, i2123))) → 4415_0_getTail_FieldAccess(EOS(STATIC_4415), java.lang.Object(List(EOC, o6565, i2123)), java.lang.Object(List(EOC, o6565, i2123)), java.lang.Object(List(EOC, o6565, i2123)))
4415_0_getTail_FieldAccess(EOS(STATIC_4415), java.lang.Object(List(EOC, o6565, i2123)), java.lang.Object(List(EOC, o6565, i2123)), java.lang.Object(List(EOC, o6565, i2123))) → 4425_0_getTail_Return(EOS(STATIC_4425), java.lang.Object(List(EOC, o6565, i2123)), java.lang.Object(List(EOC, o6565, i2123)), o6565)
4425_0_getTail_Return(EOS(STATIC_4425), java.lang.Object(List(EOC, o6565, i2123)), java.lang.Object(List(EOC, o6565, i2123)), o6565) → 4431_0_getTail_Return(EOS(STATIC_4431), java.lang.Object(List(EOC, o6565, i2123)), java.lang.Object(List(EOC, o6565, i2123)), o6565)
R rules:
4388_0_bubble_NULL(EOS(STATIC_4388), NULL, NULL) → 4390_0_bubble_NULL(EOS(STATIC_4390), NULL, NULL)
4390_0_bubble_NULL(EOS(STATIC_4390), NULL, NULL) → 4393_0_bubble_Return(EOS(STATIC_4393), NULL)
4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(o6588sub, NULL, i2129)), NULL) → 4452_0_bubble_NONNULL(EOS(STATIC_4452), java.lang.Object(List(o6588sub, NULL, i2129)), NULL)
4452_0_bubble_NONNULL(EOS(STATIC_4452), java.lang.Object(List(o6588sub, NULL, i2129)), NULL) → 4457_0_bubble_Return(EOS(STATIC_4457), java.lang.Object(List(o6588sub, NULL, i2129)))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(EOS(STATIC_4457), java.lang.Object(List(EOC, NULL, i2215))), java.lang.Object(List(EOC, NULL, i2215))) → 4650_0_bubble_Return(EOS(STATIC_4650), java.lang.Object(List(EOC, NULL, i2215)), java.lang.Object(List(EOC, NULL, i2215)))
4641_1_bubble_InvokeMethod(4651_0_bubble_Return(EOS(STATIC_4651)), java.lang.Object(List(EOC, o6706, i2129))) → 4658_0_bubble_Return(EOS(STATIC_4658), java.lang.Object(List(EOC, java.lang.Object(List(EOC, NULL, i2215)), i2216)))
4641_1_bubble_InvokeMethod(4673_0_bubble_Return(EOS(STATIC_4673)), java.lang.Object(List(EOC, o6706, i2129))) → 4684_0_bubble_Return(EOS(STATIC_4684), java.lang.Object(List(EOC, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o7024, i2224)), i2223)), i2232)))
4650_0_bubble_Return(EOS(STATIC_4650), java.lang.Object(List(EOC, NULL, i2215)), java.lang.Object(List(EOC, NULL, i2215))) → 4651_0_bubble_Return(EOS(STATIC_4651))
4658_0_bubble_Return(EOS(STATIC_4658), java.lang.Object(List(EOC, java.lang.Object(List(EOC, NULL, i2215)), i2216))) → 4671_0_bubble_Return(EOS(STATIC_4671), java.lang.Object(List(EOC, java.lang.Object(List(EOC, NULL, i2215)), i2216)))
4671_0_bubble_Return(EOS(STATIC_4671), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o7024, i2224)), i2223))) → 4673_0_bubble_Return(EOS(STATIC_4673))
4684_0_bubble_Return(EOS(STATIC_4684), java.lang.Object(List(EOC, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o7024, i2224)), i2223)), i2232))) → 4671_0_bubble_Return(EOS(STATIC_4671), java.lang.Object(List(EOC, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o7024, i2224)), i2223)), i2232)))

Combined rules. Obtained 4 conditional rules for P and 4 conditional rules for R.


P rules:
4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(x0, java.lang.Object(List(EOC, x1, x2)), x3)), x3, x2) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(EOS(STATIC_4388), java.lang.Object(List(EOC, x1, x2)), java.lang.Object(List(EOC, x1, x2))), java.lang.Object(List(EOC, x1, x2))) | <=(x3, x2)
4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(x0, java.lang.Object(List(EOC, x1, x2)), x3)), x3, x2) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(EOS(STATIC_4388), java.lang.Object(List(EOC, x1, x3)), java.lang.Object(List(EOC, x1, x3))), java.lang.Object(List(EOC, x1, x3))) | >(x3, x2)
4388_0_bubble_NULL(EOS(STATIC_4388), java.lang.Object(List(x0, java.lang.Object(List(EOC, x1, x2)), x3)), java.lang.Object(List(x0, java.lang.Object(List(EOC, x1, x2)), x3))) → 4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(x0, java.lang.Object(List(EOC, x1, x2)), x3)), x3, x2)
4388_0_bubble_NULL(EOS(STATIC_4388), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0, x1)), x2)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0, x1)), x2))) → 4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0, x1)), x2)), x2, x1)
R rules:
4388_0_bubble_NULL(EOS(STATIC_4388), NULL, NULL) → 4393_0_bubble_Return(EOS(STATIC_4393), NULL)
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(EOS(STATIC_4457), java.lang.Object(List(EOC, NULL, x0))), java.lang.Object(List(EOC, NULL, x0))) → 4651_0_bubble_Return(EOS(STATIC_4651))
4641_1_bubble_InvokeMethod(4651_0_bubble_Return(EOS(STATIC_4651)), java.lang.Object(List(EOC, x0, x1))) → 4673_0_bubble_Return(EOS(STATIC_4673))
4641_1_bubble_InvokeMethod(4673_0_bubble_Return(EOS(STATIC_4673)), java.lang.Object(List(EOC, x0, x1))) → 4673_0_bubble_Return(EOS(STATIC_4673))

Filtered ground terms:



4534_0_bubble_LE(x1, x2, x3, x4) → 4534_0_bubble_LE(x2, x3, x4)
4388_0_bubble_NULL(x1, x2, x3) → 4388_0_bubble_NULL(x2, x3)
Cond_4534_0_bubble_LE1(x1, x2, x3, x4, x5) → Cond_4534_0_bubble_LE1(x1, x3, x4, x5)
Cond_4534_0_bubble_LE(x1, x2, x3, x4, x5) → Cond_4534_0_bubble_LE(x1, x3, x4, x5)
4673_0_bubble_Return(x1) → 4673_0_bubble_Return
4651_0_bubble_Return(x1) → 4651_0_bubble_Return
4457_0_bubble_Return(x1, x2) → 4457_0_bubble_Return(x2)
4393_0_bubble_Return(x1, x2) → 4393_0_bubble_Return

Filtered duplicate args:



4534_0_bubble_LE(x1, x2, x3) → 4534_0_bubble_LE(x1)
Cond_4534_0_bubble_LE(x1, x2, x3, x4) → Cond_4534_0_bubble_LE(x1, x2)
4388_0_bubble_NULL(x1, x2) → 4388_0_bubble_NULL(x2)
Cond_4534_0_bubble_LE1(x1, x2, x3, x4) → Cond_4534_0_bubble_LE1(x1, x2)

Combined rules. Obtained 4 conditional rules for P and 4 conditional rules for R.


P rules:
4534_0_bubble_LE(java.lang.Object(List(x0, java.lang.Object(List(EOC, x1, x2)), x3))) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(java.lang.Object(List(EOC, x1, x2))), java.lang.Object(List(EOC, x1, x2))) | <=(x3, x2)
4534_0_bubble_LE(java.lang.Object(List(x0, java.lang.Object(List(EOC, x1, x2)), x3))) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(java.lang.Object(List(EOC, x1, x3))), java.lang.Object(List(EOC, x1, x3))) | >(x3, x2)
4388_0_bubble_NULL(java.lang.Object(List(x0, java.lang.Object(List(EOC, x1, x2)), x3))) → 4534_0_bubble_LE(java.lang.Object(List(x0, java.lang.Object(List(EOC, x1, x2)), x3)))
4388_0_bubble_NULL(java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0, x1)), x2))) → 4534_0_bubble_LE(java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0, x1)), x2)))
R rules:
4388_0_bubble_NULL(NULL) → 4393_0_bubble_Return
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(EOC, NULL, x0))), java.lang.Object(List(EOC, NULL, x0))) → 4651_0_bubble_Return
4641_1_bubble_InvokeMethod(4651_0_bubble_Return, java.lang.Object(List(EOC, x0, x1))) → 4673_0_bubble_Return
4641_1_bubble_InvokeMethod(4673_0_bubble_Return, java.lang.Object(List(EOC, x0, x1))) → 4673_0_bubble_Return

Performed bisimulation on rules. Used the following equivalence classes: {[4393_0_bubble_Return, EOC, 4651_0_bubble_Return, 4673_0_bubble_Return]=4393_0_bubble_Return}


Finished conversion. Obtained 6 rules for P and 3 rules for R. System has predefined symbols.


P rules:
4534_0_BUBBLE_LE(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → COND_4534_0_BUBBLE_LE(<=(x3, x2), java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3)))
COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1, x2)))
4534_0_BUBBLE_LE(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → COND_4534_0_BUBBLE_LE1(>(x3, x2), java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3)))
COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1, x3)))
4388_0_BUBBLE_NULL(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → 4534_0_BUBBLE_LE(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3)))
4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0, x1)), x2))) → 4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0, x1)), x2)))
R rules:
4388_0_bubble_NULL(NULL) → 4393_0_bubble_Return
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(4393_0_bubble_Return, NULL, x0))), java.lang.Object(List(4393_0_bubble_Return, NULL, x0))) → 4393_0_bubble_Return
4641_1_bubble_InvokeMethod(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0, x1))) → 4393_0_bubble_Return

(7) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
4388_0_bubble_NULL(NULL) → 4393_0_bubble_Return
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(4393_0_bubble_Return, NULL, x0))), java.lang.Object(List(4393_0_bubble_Return, NULL, x0))) → 4393_0_bubble_Return
4641_1_bubble_InvokeMethod(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0, x1))) → 4393_0_bubble_Return

The integer pair graph contains the following rules and edges:
(0): 4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))) → COND_4534_0_BUBBLE_LE(x3[0] <= x2[0], java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))
(1): COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))
(2): 4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))) → COND_4534_0_BUBBLE_LE1(x3[2] > x2[2], java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))
(3): COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))
(4): 4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))
(5): 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))

(0) -> (1), if (x3[0] <= x2[0]java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])) →* java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1])))


(1) -> (4), if (java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])) →* java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))


(1) -> (5), if (java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])) →* java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))


(2) -> (3), if (x3[2] > x2[2]java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])) →* java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3])))


(3) -> (4), if (java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])) →* java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))


(3) -> (5), if (java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])) →* java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))


(4) -> (0), if (java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])) →* java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))


(4) -> (2), if (java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])) →* java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))


(5) -> (0), if (java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])) →* java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))


(5) -> (2), if (java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])) →* java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))



The set Q consists of the following terms:
4388_0_bubble_NULL(NULL)
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(4393_0_bubble_Return, NULL, x0))), java.lang.Object(List(4393_0_bubble_Return, NULL, x0)))
4641_1_bubble_InvokeMethod(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0, x1)))

(8) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: true Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@38d8e7ae Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 4534_0_BUBBLE_LE(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → COND_4534_0_BUBBLE_LE(<=(x3, x2), java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) the following chains were created:
  • We consider the chain 4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))) → COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))), COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1]))) which results in the following constraint:

    (1)    (<=(x3[0], x2[0])=TRUEjava.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))=java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1])) ⇒ 4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))≥NonInfC∧4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))≥COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))∧(UIncreasing(COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))), ≥))



    We simplified constraint (1) using rules (I), (II), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (2)    (<=(x3[0], x2[0])=TRUE4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))≥NonInfC∧4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))≥COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))∧(UIncreasing(COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (0 ≥ 0 ⇒ (UIncreasing(COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))), ≥)∧[(2)bni_26 + (-1)Bound*bni_26] + [(4)bni_26]x1[0] ≥ 0∧[(-1)bso_27] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (0 ≥ 0 ⇒ (UIncreasing(COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))), ≥)∧[(2)bni_26 + (-1)Bound*bni_26] + [(4)bni_26]x1[0] ≥ 0∧[(-1)bso_27] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (0 ≥ 0 ⇒ (UIncreasing(COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))), ≥)∧[(2)bni_26 + (-1)Bound*bni_26] + [(4)bni_26]x1[0] ≥ 0∧[(-1)bso_27] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (0 ≥ 0 ⇒ (UIncreasing(COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(4)bni_26] ≥ 0∧0 ≥ 0∧[(2)bni_26 + (-1)Bound*bni_26] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_27] ≥ 0)







For Pair COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1, x2))) the following chains were created:
  • We consider the chain 4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))) → COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))), COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1]))), 4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))) which results in the following constraint:

    (7)    (<=(x3[0], x2[0])=TRUEjava.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))=java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1]))∧java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1]))=java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])) ⇒ COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1])))≥NonInfC∧COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1])))≥4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))∧(UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥))



    We simplified constraint (7) using rules (I), (II), (III), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (8)    (<=(x3[0], x2[0])=TRUECOND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x2[0])), x3[0])))≥NonInfC∧COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x2[0])), x3[0])))≥4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x2[0])))∧(UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥))



    We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (9)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥)∧[(6)bni_28 + (-1)Bound*bni_28] + [(8)bni_28]x1[4] ≥ 0∧[4 + (-1)bso_29] + [4]x1[4] ≥ 0)



    We simplified constraint (9) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (10)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥)∧[(6)bni_28 + (-1)Bound*bni_28] + [(8)bni_28]x1[4] ≥ 0∧[4 + (-1)bso_29] + [4]x1[4] ≥ 0)



    We simplified constraint (10) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (11)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥)∧[(6)bni_28 + (-1)Bound*bni_28] + [(8)bni_28]x1[4] ≥ 0∧[4 + (-1)bso_29] + [4]x1[4] ≥ 0)



    We simplified constraint (11) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint:

    (12)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(8)bni_28] ≥ 0∧0 ≥ 0∧[(6)bni_28 + (-1)Bound*bni_28] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[4 + (-1)bso_29] ≥ 0∧[1] ≥ 0)



  • We consider the chain 4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))) → COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))), COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1]))), 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))) which results in the following constraint:

    (13)    (<=(x3[0], x2[0])=TRUEjava.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))=java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1]))∧java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1]))=java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])) ⇒ COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1])))≥NonInfC∧COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1])))≥4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))∧(UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥))



    We simplified constraint (13) using rules (I), (II), (III), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (14)    (<=(x3[0], x2[0])=TRUECOND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[0])), x3[0])))≥NonInfC∧COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[0])), x3[0])))≥4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[0])))∧(UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥))



    We simplified constraint (14) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (15)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥)∧[(6)bni_28 + (-1)Bound*bni_28] + [(8)bni_28]x0[5] ≥ 0∧[4 + (-1)bso_29] + [4]x0[5] ≥ 0)



    We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (16)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥)∧[(6)bni_28 + (-1)Bound*bni_28] + [(8)bni_28]x0[5] ≥ 0∧[4 + (-1)bso_29] + [4]x0[5] ≥ 0)



    We simplified constraint (16) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (17)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥)∧[(6)bni_28 + (-1)Bound*bni_28] + [(8)bni_28]x0[5] ≥ 0∧[4 + (-1)bso_29] + [4]x0[5] ≥ 0)



    We simplified constraint (17) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint:

    (18)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(8)bni_28] ≥ 0∧0 ≥ 0∧[(6)bni_28 + (-1)Bound*bni_28] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[4 + (-1)bso_29] ≥ 0∧[1] ≥ 0)







For Pair 4534_0_BUBBLE_LE(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → COND_4534_0_BUBBLE_LE1(>(x3, x2), java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) the following chains were created:
  • We consider the chain 4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))) → COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))), COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3]))) which results in the following constraint:

    (19)    (>(x3[2], x2[2])=TRUEjava.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))=java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3])) ⇒ 4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))≥NonInfC∧4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))≥COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))∧(UIncreasing(COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))), ≥))



    We simplified constraint (19) using rules (I), (II), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (20)    (>(x3[2], x2[2])=TRUE4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))≥NonInfC∧4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))≥COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))∧(UIncreasing(COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))), ≥))



    We simplified constraint (20) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (21)    (0 ≥ 0 ⇒ (UIncreasing(COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))), ≥)∧[(2)bni_30 + (-1)Bound*bni_30] + [(4)bni_30]x1[2] ≥ 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (21) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (22)    (0 ≥ 0 ⇒ (UIncreasing(COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))), ≥)∧[(2)bni_30 + (-1)Bound*bni_30] + [(4)bni_30]x1[2] ≥ 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (23)    (0 ≥ 0 ⇒ (UIncreasing(COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))), ≥)∧[(2)bni_30 + (-1)Bound*bni_30] + [(4)bni_30]x1[2] ≥ 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (23) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (24)    (0 ≥ 0 ⇒ (UIncreasing(COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(4)bni_30] ≥ 0∧0 ≥ 0∧[(2)bni_30 + (-1)Bound*bni_30] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_31] ≥ 0)







For Pair COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1, x3))) the following chains were created:
  • We consider the chain 4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))) → COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))), COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3]))), 4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))) which results in the following constraint:

    (25)    (>(x3[2], x2[2])=TRUEjava.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))=java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3]))∧java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3]))=java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])) ⇒ COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3])))≥NonInfC∧COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3])))≥4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))∧(UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥))



    We simplified constraint (25) using rules (I), (II), (III), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (26)    (>(x3[2], x2[2])=TRUECOND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x2[2])), x3[2])))≥NonInfC∧COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x2[2])), x3[2])))≥4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[2])))∧(UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥))



    We simplified constraint (26) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (27)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥)∧[(6)bni_32 + (-1)Bound*bni_32] + [(8)bni_32]x1[4] ≥ 0∧[4 + (-1)bso_33] + [4]x1[4] ≥ 0)



    We simplified constraint (27) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (28)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥)∧[(6)bni_32 + (-1)Bound*bni_32] + [(8)bni_32]x1[4] ≥ 0∧[4 + (-1)bso_33] + [4]x1[4] ≥ 0)



    We simplified constraint (28) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (29)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥)∧[(6)bni_32 + (-1)Bound*bni_32] + [(8)bni_32]x1[4] ≥ 0∧[4 + (-1)bso_33] + [4]x1[4] ≥ 0)



    We simplified constraint (29) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint:

    (30)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(8)bni_32] ≥ 0∧0 ≥ 0∧[(6)bni_32 + (-1)Bound*bni_32] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[4 + (-1)bso_33] ≥ 0∧[1] ≥ 0)



  • We consider the chain 4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))) → COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))), COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3]))), 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))) which results in the following constraint:

    (31)    (>(x3[2], x2[2])=TRUEjava.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))=java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3]))∧java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3]))=java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])) ⇒ COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3])))≥NonInfC∧COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3])))≥4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))∧(UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥))



    We simplified constraint (31) using rules (I), (II), (III), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (32)    (>(x3[2], x2[2])=TRUECOND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[2])), x3[2])))≥NonInfC∧COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[2])), x3[2])))≥4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x3[2])))∧(UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥))



    We simplified constraint (32) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (33)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥)∧[(6)bni_32 + (-1)Bound*bni_32] + [(8)bni_32]x0[5] ≥ 0∧[4 + (-1)bso_33] + [4]x0[5] ≥ 0)



    We simplified constraint (33) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (34)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥)∧[(6)bni_32 + (-1)Bound*bni_32] + [(8)bni_32]x0[5] ≥ 0∧[4 + (-1)bso_33] + [4]x0[5] ≥ 0)



    We simplified constraint (34) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (35)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥)∧[(6)bni_32 + (-1)Bound*bni_32] + [(8)bni_32]x0[5] ≥ 0∧[4 + (-1)bso_33] + [4]x0[5] ≥ 0)



    We simplified constraint (35) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint:

    (36)    (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(8)bni_32] ≥ 0∧0 ≥ 0∧[(6)bni_32 + (-1)Bound*bni_32] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[4 + (-1)bso_33] ≥ 0∧[1] ≥ 0)







For Pair 4388_0_BUBBLE_NULL(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → 4534_0_BUBBLE_LE(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) the following chains were created:
  • We consider the chain 4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))), 4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))) → COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))) which results in the following constraint:

    (37)    (java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))=java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])) ⇒ 4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))≥NonInfC∧4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))≥4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))∧(UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥))



    We simplified constraint (37) using rules (I), (II), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (38)    (4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))≥NonInfC∧4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))≥4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))∧(UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥))



    We simplified constraint (38) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (39)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (39) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (40)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (40) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (41)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (41) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (42)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥)∧[bni_34] = 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_35] ≥ 0)



  • We consider the chain 4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))), 4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))) → COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))) which results in the following constraint:

    (43)    (java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))=java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])) ⇒ 4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))≥NonInfC∧4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))≥4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))∧(UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥))



    We simplified constraint (43) using rules (I), (II), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (44)    (4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))≥NonInfC∧4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))≥4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))∧(UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥)∧[bni_34] = 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_35] ≥ 0)







For Pair 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0, x1)), x2))) → 4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0, x1)), x2))) the following chains were created:
  • We consider the chain 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))), 4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))) → COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))) which results in the following constraint:

    (49)    (java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))=java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])) ⇒ 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))≥NonInfC∧4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))≥4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))∧(UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥))



    We simplified constraint (49) using rules (I), (II), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (50)    (4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))≥NonInfC∧4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))≥4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))∧(UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥))



    We simplified constraint (50) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (51)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥)∧[bni_36] = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (51) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (52)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥)∧[bni_36] = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (52) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (53)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥)∧[bni_36] = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (53) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (54)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥)∧[bni_36] = 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_37] ≥ 0)



  • We consider the chain 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))), 4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))) → COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))) which results in the following constraint:

    (55)    (java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))=java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])) ⇒ 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))≥NonInfC∧4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))≥4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))∧(UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥))



    We simplified constraint (55) using rules (I), (II), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (56)    (4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))≥NonInfC∧4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))≥4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))∧(UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥))



    We simplified constraint (56) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (57)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥)∧[bni_36] = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (57) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (58)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥)∧[bni_36] = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (58) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (59)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥)∧[bni_36] = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (59) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (60)    ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥)∧[bni_36] = 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_37] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 4534_0_BUBBLE_LE(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → COND_4534_0_BUBBLE_LE(<=(x3, x2), java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3)))
    • (0 ≥ 0 ⇒ (UIncreasing(COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(4)bni_26] ≥ 0∧0 ≥ 0∧[(2)bni_26 + (-1)Bound*bni_26] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_27] ≥ 0)

  • COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1, x2)))
    • (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(8)bni_28] ≥ 0∧0 ≥ 0∧[(6)bni_28 + (-1)Bound*bni_28] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[4 + (-1)bso_29] ≥ 0∧[1] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(8)bni_28] ≥ 0∧0 ≥ 0∧[(6)bni_28 + (-1)Bound*bni_28] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[4 + (-1)bso_29] ≥ 0∧[1] ≥ 0)

  • 4534_0_BUBBLE_LE(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → COND_4534_0_BUBBLE_LE1(>(x3, x2), java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3)))
    • (0 ≥ 0 ⇒ (UIncreasing(COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(4)bni_30] ≥ 0∧0 ≥ 0∧[(2)bni_30 + (-1)Bound*bni_30] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_31] ≥ 0)

  • COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1, x3)))
    • (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(8)bni_32] ≥ 0∧0 ≥ 0∧[(6)bni_32 + (-1)Bound*bni_32] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[4 + (-1)bso_33] ≥ 0∧[1] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(8)bni_32] ≥ 0∧0 ≥ 0∧[(6)bni_32 + (-1)Bound*bni_32] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[4 + (-1)bso_33] ≥ 0∧[1] ≥ 0)

  • 4388_0_BUBBLE_NULL(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3))) → 4534_0_BUBBLE_LE(java.lang.Object(List(x0, java.lang.Object(List(4393_0_bubble_Return, x1, x2)), x3)))
    • ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥)∧[bni_34] = 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_35] ≥ 0)
    • ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))), ≥)∧[bni_34] = 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_35] ≥ 0)

  • 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0, x1)), x2))) → 4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0, x1)), x2)))
    • ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥)∧[bni_36] = 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_37] ≥ 0)
    • ((UIncreasing(4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))), ≥)∧[bni_36] = 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_37] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers with natural coefficients for non-tuple symbols [NONINF][POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(4388_0_bubble_NULL(x1)) = 0   
POL(NULL) = 0   
POL(4393_0_bubble_Return) = 0   
POL(4641_1_bubble_InvokeMethod(x1, x2)) = 0   
POL(4457_0_bubble_Return(x1)) = 0   
POL(java.lang.Object(x1)) = x1   
POL(List(x1, x2, x3)) = [1] + [2]x2   
POL(4534_0_BUBBLE_LE(x1)) = [-1] + x1   
POL(COND_4534_0_BUBBLE_LE(x1, x2)) = [-1] + x2   
POL(<=(x1, x2)) = 0   
POL(4388_0_BUBBLE_NULL(x1)) = [-1] + x1   
POL(COND_4534_0_BUBBLE_LE1(x1, x2)) = [-1] + x2   
POL(>(x1, x2)) = 0   

The following pairs are in P>:

COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))
COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))

The following pairs are in Pbound:

4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))) → COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))
COND_4534_0_BUBBLE_LE(TRUE, java.lang.Object(List(x0[1], java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])), x3[1]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[1], x2[1])))
4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))) → COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))
COND_4534_0_BUBBLE_LE1(TRUE, java.lang.Object(List(x0[3], java.lang.Object(List(4393_0_bubble_Return, x1[3], x2[3])), x3[3]))) → 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, x1[3], x3[3])))

The following pairs are in P:

4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))) → COND_4534_0_BUBBLE_LE(<=(x3[0], x2[0]), java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))
4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))) → COND_4534_0_BUBBLE_LE1(>(x3[2], x2[2]), java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))
4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))
4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))

There are no usable rules.

(9) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
4388_0_bubble_NULL(NULL) → 4393_0_bubble_Return
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(4393_0_bubble_Return, NULL, x0))), java.lang.Object(List(4393_0_bubble_Return, NULL, x0))) → 4393_0_bubble_Return
4641_1_bubble_InvokeMethod(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0, x1))) → 4393_0_bubble_Return

The integer pair graph contains the following rules and edges:
(0): 4534_0_BUBBLE_LE(java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0]))) → COND_4534_0_BUBBLE_LE(x3[0] <= x2[0], java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))
(2): 4534_0_BUBBLE_LE(java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2]))) → COND_4534_0_BUBBLE_LE1(x3[2] > x2[2], java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))
(4): 4388_0_BUBBLE_NULL(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])))
(5): 4388_0_BUBBLE_NULL(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5]))) → 4534_0_BUBBLE_LE(java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])))

(4) -> (0), if (java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])) →* java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))


(5) -> (0), if (java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])) →* java.lang.Object(List(x0[0], java.lang.Object(List(4393_0_bubble_Return, x1[0], x2[0])), x3[0])))


(4) -> (2), if (java.lang.Object(List(x0[4], java.lang.Object(List(4393_0_bubble_Return, x1[4], x2[4])), x3[4])) →* java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))


(5) -> (2), if (java.lang.Object(List(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0[5], x1[5])), x2[5])) →* java.lang.Object(List(x0[2], java.lang.Object(List(4393_0_bubble_Return, x1[2], x2[2])), x3[2])))



The set Q consists of the following terms:
4388_0_bubble_NULL(NULL)
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(4393_0_bubble_Return, NULL, x0))), java.lang.Object(List(4393_0_bubble_Return, NULL, x0)))
4641_1_bubble_InvokeMethod(4393_0_bubble_Return, java.lang.Object(List(4393_0_bubble_Return, x0, x1)))

(10) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 less nodes.

(11) TRUE

(12) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Test8.length(LList;)I
SCC calls the following helper methods: Test8.length(LList;)I
Performed SCC analyses: UsedFieldsAnalysis

(13) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 37 rules for P and 63 rules for R.


P rules:
1870_0_length_NONNULL(EOS(STATIC_1870), java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1871_0_length_NONNULL(EOS(STATIC_1871), java.lang.Object(o1163sub), java.lang.Object(o1163sub))
1871_0_length_NONNULL(EOS(STATIC_1871), java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1874_0_length_ConstantStackPush(EOS(STATIC_1874), java.lang.Object(o1163sub))
1874_0_length_ConstantStackPush(EOS(STATIC_1874), java.lang.Object(o1163sub)) → 1877_0_length_Load(EOS(STATIC_1877), java.lang.Object(o1163sub))
1877_0_length_Load(EOS(STATIC_1877), java.lang.Object(o1163sub)) → 1880_0_length_InvokeMethod(EOS(STATIC_1880), java.lang.Object(o1163sub))
1880_0_length_InvokeMethod(EOS(STATIC_1880), java.lang.Object(o1163sub)) → 1882_0_getTail_Load(EOS(STATIC_1882), java.lang.Object(o1163sub), java.lang.Object(o1163sub))
1882_0_getTail_Load(EOS(STATIC_1882), java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1887_0_getTail_FieldAccess(EOS(STATIC_1887), java.lang.Object(o1163sub), java.lang.Object(o1163sub))
1887_0_getTail_FieldAccess(EOS(STATIC_1887), java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1890_0_getTail_FieldAccess(EOS(STATIC_1890), java.lang.Object(o1163sub), java.lang.Object(o1163sub))
1887_0_getTail_FieldAccess(EOS(STATIC_1887), java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1892_0_getTail_FieldAccess(EOS(STATIC_1892), java.lang.Object(o1163sub), java.lang.Object(o1163sub))
1890_0_getTail_FieldAccess(EOS(STATIC_1890), java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1895_0_getTail_FieldAccess(EOS(STATIC_1895), java.lang.Object(o1163sub), java.lang.Object(o1163sub))
1890_0_getTail_FieldAccess(EOS(STATIC_1890), java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1896_0_getTail_FieldAccess(EOS(STATIC_1896), java.lang.Object(o1163sub), java.lang.Object(o1163sub))
1895_0_getTail_FieldAccess(EOS(STATIC_1895), java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1901_0_getTail_FieldAccess(EOS(STATIC_1901), java.lang.Object(o1163sub), java.lang.Object(o1163sub))
1895_0_getTail_FieldAccess(EOS(STATIC_1895), java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1902_0_getTail_FieldAccess(EOS(STATIC_1902), java.lang.Object(o1163sub), java.lang.Object(o1163sub))
1901_0_getTail_FieldAccess(EOS(STATIC_1901), java.lang.Object(List(o1174sub, o1175)), java.lang.Object(List(o1174sub, o1175))) → 1907_0_getTail_FieldAccess(EOS(STATIC_1907), java.lang.Object(List(o1174sub, o1175)), java.lang.Object(List(o1174sub, o1175)))
1907_0_getTail_FieldAccess(EOS(STATIC_1907), java.lang.Object(List(o1174sub, o1175)), java.lang.Object(List(o1174sub, o1175))) → 1917_0_getTail_Return(EOS(STATIC_1917), java.lang.Object(List(o1174sub, o1175)), o1175)
1917_0_getTail_Return(EOS(STATIC_1917), java.lang.Object(List(o1174sub, o1175)), o1175) → 1921_0_getTail_Return(EOS(STATIC_1921), java.lang.Object(List(o1174sub, o1175)), o1175)
1921_0_getTail_Return(EOS(STATIC_1921), java.lang.Object(List(EOC, o1177)), o1177) → 1931_0_length_InvokeMethod(EOS(STATIC_1931), o1177)
1931_0_length_InvokeMethod(EOS(STATIC_1931), o1177) → 1936_1_length_InvokeMethod(1936_0_length_Load(EOS(STATIC_1936), o1177), o1177)
1936_0_length_Load(EOS(STATIC_1936), o1177) → 1941_0_length_Load(EOS(STATIC_1941), o1177)
1941_0_length_Load(EOS(STATIC_1941), o1177) → 1953_0_length_Load(EOS(STATIC_1953), o1177)
1953_0_length_Load(EOS(STATIC_1953), o1177) → 1868_0_length_Load(EOS(STATIC_1868), o1177)
1868_0_length_Load(EOS(STATIC_1868), o1157) → 1870_0_length_NONNULL(EOS(STATIC_1870), o1157, o1157)
1902_0_getTail_FieldAccess(EOS(STATIC_1902), java.lang.Object(List(EOC, o1177)), java.lang.Object(List(EOC, o1177))) → 1908_0_getTail_FieldAccess(EOS(STATIC_1908), java.lang.Object(List(EOC, o1177)), java.lang.Object(List(EOC, o1177)))
1908_0_getTail_FieldAccess(EOS(STATIC_1908), java.lang.Object(List(EOC, o1177)), java.lang.Object(List(EOC, o1177))) → 1921_0_getTail_Return(EOS(STATIC_1921), java.lang.Object(List(EOC, o1177)), o1177)
1896_0_getTail_FieldAccess(EOS(STATIC_1896), java.lang.Object(List(EOC, o1173)), java.lang.Object(List(EOC, o1173))) → 1903_0_getTail_FieldAccess(EOS(STATIC_1903), java.lang.Object(List(EOC, o1173)), java.lang.Object(List(EOC, o1173)))
1903_0_getTail_FieldAccess(EOS(STATIC_1903), java.lang.Object(List(EOC, o1173)), java.lang.Object(List(EOC, o1173))) → 1911_0_getTail_Return(EOS(STATIC_1911), java.lang.Object(List(EOC, o1173)), o1173)
1911_0_getTail_Return(EOS(STATIC_1911), java.lang.Object(List(EOC, o1173)), o1173) → 1923_0_length_InvokeMethod(EOS(STATIC_1923), o1173)
1923_0_length_InvokeMethod(EOS(STATIC_1923), o1173) → 1933_1_length_InvokeMethod(1933_0_length_Load(EOS(STATIC_1933), o1173), o1173)
1933_0_length_Load(EOS(STATIC_1933), o1173) → 1938_0_length_Load(EOS(STATIC_1938), o1173)
1938_0_length_Load(EOS(STATIC_1938), o1173) → 1947_0_length_Load(EOS(STATIC_1947), o1173)
1947_0_length_Load(EOS(STATIC_1947), o1173) → 1868_0_length_Load(EOS(STATIC_1868), o1173)
1892_0_getTail_FieldAccess(EOS(STATIC_1892), java.lang.Object(List(EOC, o1171)), java.lang.Object(List(EOC, o1171))) → 1897_0_getTail_FieldAccess(EOS(STATIC_1897), java.lang.Object(List(EOC, o1171)), java.lang.Object(List(EOC, o1171)))
1897_0_getTail_FieldAccess(EOS(STATIC_1897), java.lang.Object(List(EOC, o1171)), java.lang.Object(List(EOC, o1171))) → 1904_0_getTail_Return(EOS(STATIC_1904), java.lang.Object(List(EOC, o1171)), o1171)
1904_0_getTail_Return(EOS(STATIC_1904), java.lang.Object(List(EOC, o1171)), o1171) → 1912_0_length_InvokeMethod(EOS(STATIC_1912), o1171)
1912_0_length_InvokeMethod(EOS(STATIC_1912), o1171) → 1924_1_length_InvokeMethod(1924_0_length_Load(EOS(STATIC_1924), o1171), o1171)
1924_0_length_Load(EOS(STATIC_1924), o1171) → 1934_0_length_Load(EOS(STATIC_1934), o1171)
1934_0_length_Load(EOS(STATIC_1934), o1171) → 1943_0_length_Load(EOS(STATIC_1943), o1171)
1943_0_length_Load(EOS(STATIC_1943), o1171) → 1868_0_length_Load(EOS(STATIC_1868), o1171)
R rules:
1870_0_length_NONNULL(EOS(STATIC_1870), NULL, NULL) → 1872_0_length_NONNULL(EOS(STATIC_1872), NULL, NULL)
1872_0_length_NONNULL(EOS(STATIC_1872), NULL, NULL) → 1875_0_length_ConstantStackPush(EOS(STATIC_1875), NULL)
1875_0_length_ConstantStackPush(EOS(STATIC_1875), NULL) → 1878_0_length_Return(EOS(STATIC_1878), NULL)
1924_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL), NULL) → 1957_0_length_Return(EOS(STATIC_1957), NULL, NULL)
1924_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970)), java.lang.Object(List(EOC, NULL))) → 1999_0_length_Return(EOS(STATIC_1999), java.lang.Object(List(EOC, NULL)))
1924_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977)), java.lang.Object(List(EOC, NULL))) → 2009_0_length_Return(EOS(STATIC_2009), java.lang.Object(List(EOC, NULL)))
1924_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981)), java.lang.Object(List(EOC, NULL))) → 2023_0_length_Return(EOS(STATIC_2023), java.lang.Object(List(EOC, NULL)))
1924_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3294))))) → 2566_0_length_Return(EOS(STATIC_2566), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3294)))))
1924_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3313))))) → 2579_0_length_Return(EOS(STATIC_2579), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3313)))))
1924_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3332))))) → 2590_0_length_Return(EOS(STATIC_2590), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3332)))))
1933_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL), NULL) → 1962_0_length_Return(EOS(STATIC_1962), NULL, NULL)
1933_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970)), java.lang.Object(List(EOC, NULL))) → 2000_0_length_Return(EOS(STATIC_2000), java.lang.Object(List(EOC, NULL)))
1933_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977)), java.lang.Object(List(EOC, NULL))) → 2011_0_length_Return(EOS(STATIC_2011), java.lang.Object(List(EOC, NULL)))
1933_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981)), java.lang.Object(List(EOC, NULL))) → 2025_0_length_Return(EOS(STATIC_2025), java.lang.Object(List(EOC, NULL)))
1933_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3298))))) → 2569_0_length_Return(EOS(STATIC_2569), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3298)))))
1933_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3317))))) → 2582_0_length_Return(EOS(STATIC_2582), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3317)))))
1933_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3336))))) → 2593_0_length_Return(EOS(STATIC_2593), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3336)))))
1936_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL), NULL) → 1966_0_length_Return(EOS(STATIC_1966), NULL, NULL)
1936_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970)), java.lang.Object(List(EOC, NULL))) → 2001_0_length_Return(EOS(STATIC_2001), java.lang.Object(List(EOC, NULL)))
1936_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977)), java.lang.Object(List(EOC, NULL))) → 2013_0_length_Return(EOS(STATIC_2013), java.lang.Object(List(EOC, NULL)))
1936_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981)), java.lang.Object(List(EOC, NULL))) → 2027_0_length_Return(EOS(STATIC_2027), java.lang.Object(List(EOC, NULL)))
1936_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3302))))) → 2573_0_length_Return(EOS(STATIC_2573), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3302)))))
1936_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3321))))) → 2585_0_length_Return(EOS(STATIC_2585), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3321)))))
1936_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3340))))) → 2596_0_length_Return(EOS(STATIC_2596), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3340)))))
1957_0_length_Return(EOS(STATIC_1957), NULL, NULL) → 1964_0_length_IntArithmetic(EOS(STATIC_1964))
1962_0_length_Return(EOS(STATIC_1962), NULL, NULL) → 1968_0_length_IntArithmetic(EOS(STATIC_1968))
1964_0_length_IntArithmetic(EOS(STATIC_1964)) → 1970_0_length_Return(EOS(STATIC_1970))
1966_0_length_Return(EOS(STATIC_1966), NULL, NULL) → 1975_0_length_IntArithmetic(EOS(STATIC_1975))
1968_0_length_IntArithmetic(EOS(STATIC_1968)) → 1977_0_length_Return(EOS(STATIC_1977))
1975_0_length_IntArithmetic(EOS(STATIC_1975)) → 1981_0_length_Return(EOS(STATIC_1981))
1999_0_length_Return(EOS(STATIC_1999), java.lang.Object(List(EOC, NULL))) → 2072_0_length_Return(EOS(STATIC_2072), java.lang.Object(List(EOC, NULL)))
2000_0_length_Return(EOS(STATIC_2000), java.lang.Object(List(EOC, NULL))) → 2080_0_length_Return(EOS(STATIC_2080), java.lang.Object(List(EOC, NULL)))
2001_0_length_Return(EOS(STATIC_2001), java.lang.Object(List(EOC, NULL))) → 2088_0_length_Return(EOS(STATIC_2088), java.lang.Object(List(EOC, NULL)))
2009_0_length_Return(EOS(STATIC_2009), java.lang.Object(List(EOC, NULL))) → 1999_0_length_Return(EOS(STATIC_1999), java.lang.Object(List(EOC, NULL)))
2011_0_length_Return(EOS(STATIC_2011), java.lang.Object(List(EOC, NULL))) → 2000_0_length_Return(EOS(STATIC_2000), java.lang.Object(List(EOC, NULL)))
2013_0_length_Return(EOS(STATIC_2013), java.lang.Object(List(EOC, NULL))) → 2001_0_length_Return(EOS(STATIC_2001), java.lang.Object(List(EOC, NULL)))
2023_0_length_Return(EOS(STATIC_2023), java.lang.Object(List(EOC, NULL))) → 1999_0_length_Return(EOS(STATIC_1999), java.lang.Object(List(EOC, NULL)))
2025_0_length_Return(EOS(STATIC_2025), java.lang.Object(List(EOC, NULL))) → 2000_0_length_Return(EOS(STATIC_2000), java.lang.Object(List(EOC, NULL)))
2027_0_length_Return(EOS(STATIC_2027), java.lang.Object(List(EOC, NULL))) → 2001_0_length_Return(EOS(STATIC_2001), java.lang.Object(List(EOC, NULL)))
2072_0_length_Return(EOS(STATIC_2072), java.lang.Object(List(EOC, o1603))) → 2152_0_length_Return(EOS(STATIC_2152), java.lang.Object(List(EOC, o1603)))
2080_0_length_Return(EOS(STATIC_2080), java.lang.Object(List(EOC, o1661))) → 2160_0_length_Return(EOS(STATIC_2160), java.lang.Object(List(EOC, o1661)))
2088_0_length_Return(EOS(STATIC_2088), java.lang.Object(List(EOC, o1712))) → 2168_0_length_Return(EOS(STATIC_2168), java.lang.Object(List(EOC, o1712)))
2152_0_length_Return(EOS(STATIC_2152), java.lang.Object(List(EOC, o1978))) → 2286_0_length_Return(EOS(STATIC_2286), java.lang.Object(List(EOC, o1978)))
2160_0_length_Return(EOS(STATIC_2160), java.lang.Object(List(EOC, o2040))) → 2294_0_length_Return(EOS(STATIC_2294), java.lang.Object(List(EOC, o2040)))
2168_0_length_Return(EOS(STATIC_2168), java.lang.Object(List(EOC, o2095))) → 2303_0_length_Return(EOS(STATIC_2303), java.lang.Object(List(EOC, o2095)))
2286_0_length_Return(EOS(STATIC_2286), java.lang.Object(List(EOC, o2468))) → 2426_0_length_Return(EOS(STATIC_2426), java.lang.Object(List(EOC, o2468)))
2294_0_length_Return(EOS(STATIC_2294), java.lang.Object(List(EOC, o2530))) → 2437_0_length_Return(EOS(STATIC_2437), java.lang.Object(List(EOC, o2530)))
2303_0_length_Return(EOS(STATIC_2303), java.lang.Object(List(EOC, o2585))) → 2447_0_length_Return(EOS(STATIC_2447), java.lang.Object(List(EOC, o2585)))
2426_0_length_Return(EOS(STATIC_2426), java.lang.Object(List(EOC, o2906))) → 2482_0_length_IntArithmetic(EOS(STATIC_2482))
2437_0_length_Return(EOS(STATIC_2437), java.lang.Object(List(EOC, o2968))) → 2484_0_length_IntArithmetic(EOS(STATIC_2484))
2447_0_length_Return(EOS(STATIC_2447), java.lang.Object(List(EOC, o3023))) → 2489_0_length_IntArithmetic(EOS(STATIC_2489))
2482_0_length_IntArithmetic(EOS(STATIC_2482)) → 2496_0_length_Return(EOS(STATIC_2496))
2484_0_length_IntArithmetic(EOS(STATIC_2484)) → 2501_0_length_Return(EOS(STATIC_2501))
2489_0_length_IntArithmetic(EOS(STATIC_2489)) → 2506_0_length_Return(EOS(STATIC_2506))
2566_0_length_Return(EOS(STATIC_2566), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3294))))) → 2426_0_length_Return(EOS(STATIC_2426), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3294)))))
2569_0_length_Return(EOS(STATIC_2569), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3298))))) → 2437_0_length_Return(EOS(STATIC_2437), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3298)))))
2573_0_length_Return(EOS(STATIC_2573), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3302))))) → 2447_0_length_Return(EOS(STATIC_2447), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3302)))))
2579_0_length_Return(EOS(STATIC_2579), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3313))))) → 2426_0_length_Return(EOS(STATIC_2426), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3313)))))
2582_0_length_Return(EOS(STATIC_2582), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3317))))) → 2437_0_length_Return(EOS(STATIC_2437), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3317)))))
2585_0_length_Return(EOS(STATIC_2585), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3321))))) → 2447_0_length_Return(EOS(STATIC_2447), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3321)))))
2590_0_length_Return(EOS(STATIC_2590), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3332))))) → 2426_0_length_Return(EOS(STATIC_2426), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3332)))))
2593_0_length_Return(EOS(STATIC_2593), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3336))))) → 2437_0_length_Return(EOS(STATIC_2437), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3336)))))
2596_0_length_Return(EOS(STATIC_2596), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3340))))) → 2447_0_length_Return(EOS(STATIC_2447), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o3340)))))

Combined rules. Obtained 3 conditional rules for P and 22 conditional rules for R.


P rules:
1870_0_length_NONNULL(EOS(STATIC_1870), java.lang.Object(List(EOC, x0)), java.lang.Object(List(EOC, x0))) → 1936_1_length_InvokeMethod(1870_0_length_NONNULL(EOS(STATIC_1870), x0, x0), x0)
1870_0_length_NONNULL(EOS(STATIC_1870), java.lang.Object(List(EOC, x0)), java.lang.Object(List(EOC, x0))) → 1933_1_length_InvokeMethod(1870_0_length_NONNULL(EOS(STATIC_1870), x0, x0), x0)
1870_0_length_NONNULL(EOS(STATIC_1870), java.lang.Object(List(EOC, x0)), java.lang.Object(List(EOC, x0))) → 1924_1_length_InvokeMethod(1870_0_length_NONNULL(EOS(STATIC_1870), x0, x0), x0)
R rules:
1870_0_length_NONNULL(EOS(STATIC_1870), NULL, NULL) → 1878_0_length_Return(EOS(STATIC_1878), NULL)
1924_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL), NULL) → 1970_0_length_Return(EOS(STATIC_1970))
1933_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL), NULL) → 1977_0_length_Return(EOS(STATIC_1977))
1936_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL), NULL) → 1981_0_length_Return(EOS(STATIC_1981))
1924_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0))))) → 2496_0_length_Return(EOS(STATIC_2496))
1924_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0))))) → 2496_0_length_Return(EOS(STATIC_2496))
1924_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0))))) → 2496_0_length_Return(EOS(STATIC_2496))
1924_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970)), java.lang.Object(List(EOC, NULL))) → 2496_0_length_Return(EOS(STATIC_2496))
1924_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977)), java.lang.Object(List(EOC, NULL))) → 2496_0_length_Return(EOS(STATIC_2496))
1924_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981)), java.lang.Object(List(EOC, NULL))) → 2496_0_length_Return(EOS(STATIC_2496))
1933_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0))))) → 2501_0_length_Return(EOS(STATIC_2501))
1933_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0))))) → 2501_0_length_Return(EOS(STATIC_2501))
1933_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0))))) → 2501_0_length_Return(EOS(STATIC_2501))
1933_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970)), java.lang.Object(List(EOC, NULL))) → 2501_0_length_Return(EOS(STATIC_2501))
1933_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977)), java.lang.Object(List(EOC, NULL))) → 2501_0_length_Return(EOS(STATIC_2501))
1933_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981)), java.lang.Object(List(EOC, NULL))) → 2501_0_length_Return(EOS(STATIC_2501))
1936_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0))))) → 2506_0_length_Return(EOS(STATIC_2506))
1936_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0))))) → 2506_0_length_Return(EOS(STATIC_2506))
1936_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0))))) → 2506_0_length_Return(EOS(STATIC_2506))
1936_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970)), java.lang.Object(List(EOC, NULL))) → 2506_0_length_Return(EOS(STATIC_2506))
1936_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977)), java.lang.Object(List(EOC, NULL))) → 2506_0_length_Return(EOS(STATIC_2506))
1936_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981)), java.lang.Object(List(EOC, NULL))) → 2506_0_length_Return(EOS(STATIC_2506))

Filtered ground terms:



1870_0_length_NONNULL(x1, x2, x3) → 1870_0_length_NONNULL(x2, x3)
List(x1, x2) → List(x2)
2506_0_length_Return(x1) → 2506_0_length_Return
1981_0_length_Return(x1) → 1981_0_length_Return
1977_0_length_Return(x1) → 1977_0_length_Return
1970_0_length_Return(x1) → 1970_0_length_Return
2501_0_length_Return(x1) → 2501_0_length_Return
2496_0_length_Return(x1) → 2496_0_length_Return
1878_0_length_Return(x1, x2) → 1878_0_length_Return

Filtered duplicate args:



1870_0_length_NONNULL(x1, x2) → 1870_0_length_NONNULL(x2)

Combined rules. Obtained 3 conditional rules for P and 22 conditional rules for R.


P rules:
1870_0_length_NONNULL(java.lang.Object(List(x0))) → 1936_1_length_InvokeMethod(1870_0_length_NONNULL(x0), x0)
1870_0_length_NONNULL(java.lang.Object(List(x0))) → 1933_1_length_InvokeMethod(1870_0_length_NONNULL(x0), x0)
1870_0_length_NONNULL(java.lang.Object(List(x0))) → 1924_1_length_InvokeMethod(1870_0_length_NONNULL(x0), x0)
R rules:
1870_0_length_NONNULL(NULL) → 1878_0_length_Return
1924_1_length_InvokeMethod(1878_0_length_Return, NULL) → 1970_0_length_Return
1933_1_length_InvokeMethod(1878_0_length_Return, NULL) → 1977_0_length_Return
1936_1_length_InvokeMethod(1878_0_length_Return, NULL) → 1981_0_length_Return
1924_1_length_InvokeMethod(2496_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 2496_0_length_Return
1924_1_length_InvokeMethod(2501_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 2496_0_length_Return
1924_1_length_InvokeMethod(2506_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 2496_0_length_Return
1924_1_length_InvokeMethod(1970_0_length_Return, java.lang.Object(List(NULL))) → 2496_0_length_Return
1924_1_length_InvokeMethod(1977_0_length_Return, java.lang.Object(List(NULL))) → 2496_0_length_Return
1924_1_length_InvokeMethod(1981_0_length_Return, java.lang.Object(List(NULL))) → 2496_0_length_Return
1933_1_length_InvokeMethod(2496_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 2501_0_length_Return
1933_1_length_InvokeMethod(2501_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 2501_0_length_Return
1933_1_length_InvokeMethod(2506_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 2501_0_length_Return
1933_1_length_InvokeMethod(1970_0_length_Return, java.lang.Object(List(NULL))) → 2501_0_length_Return
1933_1_length_InvokeMethod(1977_0_length_Return, java.lang.Object(List(NULL))) → 2501_0_length_Return
1933_1_length_InvokeMethod(1981_0_length_Return, java.lang.Object(List(NULL))) → 2501_0_length_Return
1936_1_length_InvokeMethod(2496_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 2506_0_length_Return
1936_1_length_InvokeMethod(2501_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 2506_0_length_Return
1936_1_length_InvokeMethod(2506_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 2506_0_length_Return
1936_1_length_InvokeMethod(1970_0_length_Return, java.lang.Object(List(NULL))) → 2506_0_length_Return
1936_1_length_InvokeMethod(1977_0_length_Return, java.lang.Object(List(NULL))) → 2506_0_length_Return
1936_1_length_InvokeMethod(1981_0_length_Return, java.lang.Object(List(NULL))) → 2506_0_length_Return

Performed bisimulation on rules. Used the following equivalence classes: {[1878_0_length_Return, 1970_0_length_Return, 1977_0_length_Return, 1981_0_length_Return, 2496_0_length_Return, 2501_0_length_Return, 2506_0_length_Return]=1878_0_length_Return, [1924_1_length_InvokeMethod_2, 1933_1_length_InvokeMethod_2, 1936_1_length_InvokeMethod_2]=1924_1_length_InvokeMethod_2}


Finished conversion. Obtained 1 rules for P and 4 rules for R. System has no predefined symbols.


P rules:
1870_0_LENGTH_NONNULL(java.lang.Object(List(x0))) → 1870_0_LENGTH_NONNULL(x0)
R rules:
1870_0_length_NONNULL(NULL) → 1878_0_length_Return
1924_1_length_InvokeMethod(1878_0_length_Return, NULL) → 1878_0_length_Return
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 1878_0_length_Return
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(NULL))) → 1878_0_length_Return

(14) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


The ITRS R consists of the following rules:
1870_0_length_NONNULL(NULL) → 1878_0_length_Return
1924_1_length_InvokeMethod(1878_0_length_Return, NULL) → 1878_0_length_Return
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 1878_0_length_Return
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(NULL))) → 1878_0_length_Return

The integer pair graph contains the following rules and edges:
(0): 1870_0_LENGTH_NONNULL(java.lang.Object(List(x0[0]))) → 1870_0_LENGTH_NONNULL(x0[0])

(0) -> (0), if (x0[0]* java.lang.Object(List(x0[0]')))



The set Q consists of the following terms:
1870_0_length_NONNULL(NULL)
1924_1_length_InvokeMethod(1878_0_length_Return, NULL)
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0)))))
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(NULL)))

(15) IDPtoQDPProof (SOUND transformation)

Represented integers and predefined function symbols by Terms

(16) Obligation:

Q DP problem:
The TRS P consists of the following rules:

1870_0_LENGTH_NONNULL(java.lang.Object(List(x0[0]))) → 1870_0_LENGTH_NONNULL(x0[0])

The TRS R consists of the following rules:

1870_0_length_NONNULL(NULL) → 1878_0_length_Return
1924_1_length_InvokeMethod(1878_0_length_Return, NULL) → 1878_0_length_Return
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0))))) → 1878_0_length_Return
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(NULL))) → 1878_0_length_Return

The set Q consists of the following terms:

1870_0_length_NONNULL(NULL)
1924_1_length_InvokeMethod(1878_0_length_Return, NULL)
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0)))))
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(NULL)))

We have to consider all minimal (P,Q,R)-chains.

(17) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(18) Obligation:

Q DP problem:
The TRS P consists of the following rules:

1870_0_LENGTH_NONNULL(java.lang.Object(List(x0[0]))) → 1870_0_LENGTH_NONNULL(x0[0])

R is empty.
The set Q consists of the following terms:

1870_0_length_NONNULL(NULL)
1924_1_length_InvokeMethod(1878_0_length_Return, NULL)
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0)))))
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(NULL)))

We have to consider all minimal (P,Q,R)-chains.

(19) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

1870_0_length_NONNULL(NULL)
1924_1_length_InvokeMethod(1878_0_length_Return, NULL)
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(java.lang.Object(List(x0)))))
1924_1_length_InvokeMethod(1878_0_length_Return, java.lang.Object(List(NULL)))

(20) Obligation:

Q DP problem:
The TRS P consists of the following rules:

1870_0_LENGTH_NONNULL(java.lang.Object(List(x0[0]))) → 1870_0_LENGTH_NONNULL(x0[0])

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(21) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • 1870_0_LENGTH_NONNULL(java.lang.Object(List(x0[0]))) → 1870_0_LENGTH_NONNULL(x0[0])
    The graph contains the following edges 1 > 1

(22) YES

(23) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Test8.test([LList;I)V
SCC calls the following helper methods: Test8.length(LList;)I, Test8.test([LList;I)V, Test8.bubble(LList;)V
Performed SCC analyses: UsedFieldsAnalysis

(24) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 76 rules for P and 212 rules for R.


P rules:
2003_0_test_LT(EOS(STATIC_2003), java.lang.Object(ARRAY(matching1)), i750, i750) → 2021_0_test_LT(EOS(STATIC_2021), java.lang.Object(ARRAY(3)), i750, i750) | =(matching1, 3)
2021_0_test_LT(EOS(STATIC_2021), java.lang.Object(ARRAY(matching1)), i750, i750) → 2039_0_test_Load(EOS(STATIC_2039), java.lang.Object(ARRAY(3)), i750) | &&(>=(i750, 0), =(matching1, 3))
2039_0_test_Load(EOS(STATIC_2039), java.lang.Object(ARRAY(matching1)), i750) → 2045_0_test_Load(EOS(STATIC_2045), java.lang.Object(ARRAY(3)), i750, java.lang.Object(ARRAY(3))) | =(matching1, 3)
2045_0_test_Load(EOS(STATIC_2045), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(ARRAY(matching2))) → 2064_0_test_ArrayAccess(EOS(STATIC_2064), java.lang.Object(ARRAY(3)), i750, java.lang.Object(ARRAY(3)), i750) | &&(=(matching1, 3), =(matching2, 3))
2064_0_test_ArrayAccess(EOS(STATIC_2064), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(ARRAY(matching2)), i750) → 2104_0_test_InvokeMethod(EOS(STATIC_2104), java.lang.Object(ARRAY(3)), i750, o1796) | &&(&&(<(i750, 3), =(matching1, 3)), =(matching2, 3))
2104_0_test_InvokeMethod(EOS(STATIC_2104), java.lang.Object(ARRAY(matching1)), i750, o1796) → 2112_1_test_InvokeMethod(2112_0_length_Load(EOS(STATIC_2112), o1796), java.lang.Object(ARRAY(3)), i750, o1796) | =(matching1, 3)
2112_1_test_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL, matching1), java.lang.Object(ARRAY(matching2)), i750, NULL) → 2246_0_length_Return(EOS(STATIC_2246), java.lang.Object(ARRAY(3)), i750, NULL, NULL, 0) | &&(=(matching1, 0), =(matching2, 3))
2112_1_test_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970), matching1), java.lang.Object(ARRAY(matching2)), i750, java.lang.Object(List(EOC))) → 2247_0_length_Return(EOS(STATIC_2247), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 3))
2112_1_test_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977), matching1), java.lang.Object(ARRAY(matching2)), i750, java.lang.Object(List(EOC))) → 2253_0_length_Return(EOS(STATIC_2253), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 3))
2112_1_test_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981), matching1), java.lang.Object(ARRAY(matching2)), i750, java.lang.Object(List(EOC))) → 2262_0_length_Return(EOS(STATIC_2262), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 3))
2112_1_test_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496), i1297), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC))) → 2577_0_length_Return(EOS(STATIC_2577), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), i1297) | =(matching1, 3)
2112_1_test_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501), i1305), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC))) → 2587_0_length_Return(EOS(STATIC_2587), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), i1305) | =(matching1, 3)
2112_1_test_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506), i1317), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC))) → 2600_0_length_Return(EOS(STATIC_2600), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), i1317) | =(matching1, 3)
2246_0_length_Return(EOS(STATIC_2246), java.lang.Object(ARRAY(matching1)), i750, NULL, NULL, matching2) → 2324_0_test_Store(EOS(STATIC_2324), java.lang.Object(ARRAY(3)), i750, 0) | &&(=(matching1, 3), =(matching2, 0))
2324_0_test_Store(EOS(STATIC_2324), java.lang.Object(ARRAY(matching1)), i750, matching2) → 2343_0_test_ConstantStackPush(EOS(STATIC_2343), java.lang.Object(ARRAY(3)), i750, 0) | &&(=(matching1, 3), =(matching2, 0))
2343_0_test_ConstantStackPush(EOS(STATIC_2343), java.lang.Object(ARRAY(matching1)), i750, matching2) → 2364_0_test_Store(EOS(STATIC_2364), java.lang.Object(ARRAY(3)), i750, 0, 0) | &&(=(matching1, 3), =(matching2, 0))
2364_0_test_Store(EOS(STATIC_2364), java.lang.Object(ARRAY(matching1)), i750, matching2, matching3) → 2372_0_test_Load(EOS(STATIC_2372), java.lang.Object(ARRAY(3)), i750, 0, 0) | &&(&&(=(matching1, 3), =(matching2, 0)), =(matching3, 0))
2372_0_test_Load(EOS(STATIC_2372), java.lang.Object(ARRAY(matching1)), i750, matching2, matching3) → 2411_0_test_Load(EOS(STATIC_2411), java.lang.Object(ARRAY(3)), i750, 0, 0, 0) | &&(&&(=(matching1, 3), =(matching2, 0)), =(matching3, 0))
2411_0_test_Load(EOS(STATIC_2411), java.lang.Object(ARRAY(matching1)), i750, matching2, matching3, matching4) → 2480_0_test_GE(EOS(STATIC_2480), java.lang.Object(ARRAY(3)), i750, 0, 0, 0, 0) | &&(&&(&&(=(matching1, 3), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
2480_0_test_GE(EOS(STATIC_2480), java.lang.Object(ARRAY(matching1)), i750, matching2, matching3, matching4, matching5) → 2493_0_test_Load(EOS(STATIC_2493), java.lang.Object(ARRAY(3)), i750) | &&(&&(&&(&&(=(matching1, 3), =(matching2, 0)), =(matching3, 0)), =(matching4, 0)), =(matching5, 0))
2493_0_test_Load(EOS(STATIC_2493), java.lang.Object(ARRAY(matching1)), i750) → 2738_0_test_Load(EOS(STATIC_2738), java.lang.Object(ARRAY(3)), i750) | =(matching1, 3)
2738_0_test_Load(EOS(STATIC_2738), java.lang.Object(ARRAY(matching1)), i750) → 3154_0_test_Load(EOS(STATIC_3154), java.lang.Object(ARRAY(3)), i750) | =(matching1, 3)
3154_0_test_Load(EOS(STATIC_3154), java.lang.Object(ARRAY(matching1)), i750) → 3416_0_test_Load(EOS(STATIC_3416), java.lang.Object(ARRAY(3)), i750) | =(matching1, 3)
3416_0_test_Load(EOS(STATIC_3416), java.lang.Object(ARRAY(matching1)), i750) → 3796_0_test_Load(EOS(STATIC_3796), java.lang.Object(ARRAY(3)), i750) | =(matching1, 3)
3796_0_test_Load(EOS(STATIC_3796), java.lang.Object(ARRAY(matching1)), i750) → 4448_0_test_Load(EOS(STATIC_4448), java.lang.Object(ARRAY(3)), i750) | =(matching1, 3)
4448_0_test_Load(EOS(STATIC_4448), java.lang.Object(ARRAY(matching1)), i750) → 4453_0_test_Load(EOS(STATIC_4453), i750, java.lang.Object(ARRAY(3))) | =(matching1, 3)
4453_0_test_Load(EOS(STATIC_4453), i750, java.lang.Object(ARRAY(matching1))) → 4458_0_test_ConstantStackPush(EOS(STATIC_4458), java.lang.Object(ARRAY(3)), i750) | =(matching1, 3)
4458_0_test_ConstantStackPush(EOS(STATIC_4458), java.lang.Object(ARRAY(matching1)), i750) → 4462_0_test_IntArithmetic(EOS(STATIC_4462), java.lang.Object(ARRAY(3)), i750, 1) | =(matching1, 3)
4462_0_test_IntArithmetic(EOS(STATIC_4462), java.lang.Object(ARRAY(matching1)), i750, matching2) → 4466_0_test_InvokeMethod(EOS(STATIC_4466), java.lang.Object(ARRAY(3)), -(i750, 1)) | &&(&&(>=(i750, 0), =(matching1, 3)), =(matching2, 1))
4466_0_test_InvokeMethod(EOS(STATIC_4466), java.lang.Object(ARRAY(matching1)), i2135) → 4469_1_test_InvokeMethod(4469_0_test_Load(EOS(STATIC_4469), java.lang.Object(ARRAY(3)), i2135), java.lang.Object(ARRAY(3)), i2135) | =(matching1, 3)
4469_0_test_Load(EOS(STATIC_4469), java.lang.Object(ARRAY(matching1)), i2135) → 4473_0_test_Load(EOS(STATIC_4473), java.lang.Object(ARRAY(3)), i2135) | =(matching1, 3)
4473_0_test_Load(EOS(STATIC_4473), java.lang.Object(ARRAY(matching1)), i2135) → 1992_0_test_Load(EOS(STATIC_1992), java.lang.Object(ARRAY(3)), i2135) | =(matching1, 3)
1992_0_test_Load(EOS(STATIC_1992), java.lang.Object(ARRAY(matching1)), i725) → 2003_0_test_LT(EOS(STATIC_2003), java.lang.Object(ARRAY(3)), i725, i725) | =(matching1, 3)
2247_0_length_Return(EOS(STATIC_2247), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC)), matching2) → 2254_0_length_Return(EOS(STATIC_2254), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 3), =(matching2, 1))
2254_0_length_Return(EOS(STATIC_2254), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC)), matching2) → 2263_0_length_Return(EOS(STATIC_2263), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 3), =(matching2, 1))
2263_0_length_Return(EOS(STATIC_2263), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC)), matching2) → 2271_0_length_Return(EOS(STATIC_2271), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 3), =(matching2, 1))
2271_0_length_Return(EOS(STATIC_2271), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC)), i1066) → 2454_0_length_Return(EOS(STATIC_2454), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), i1066) | =(matching1, 3)
2454_0_length_Return(EOS(STATIC_2454), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC)), i1256) → 2491_0_test_Store(EOS(STATIC_2491), java.lang.Object(ARRAY(3)), i750, i1256) | =(matching1, 3)
2491_0_test_Store(EOS(STATIC_2491), java.lang.Object(ARRAY(matching1)), i750, i1256) → 2508_0_test_ConstantStackPush(EOS(STATIC_2508), java.lang.Object(ARRAY(3)), i750, i1256) | =(matching1, 3)
2508_0_test_ConstantStackPush(EOS(STATIC_2508), java.lang.Object(ARRAY(matching1)), i750, i1256) → 2515_0_test_Store(EOS(STATIC_2515), java.lang.Object(ARRAY(3)), i750, i1256, 0) | =(matching1, 3)
2515_0_test_Store(EOS(STATIC_2515), java.lang.Object(ARRAY(matching1)), i750, i1256, matching2) → 2561_0_test_Load(EOS(STATIC_2561), java.lang.Object(ARRAY(3)), i750, i1256, 0) | &&(=(matching1, 3), =(matching2, 0))
2561_0_test_Load(EOS(STATIC_2561), java.lang.Object(ARRAY(matching1)), i750, i1256, matching2) → 2685_0_test_Load(EOS(STATIC_2685), java.lang.Object(ARRAY(3)), i750, i1256, 0) | &&(=(matching1, 3), =(matching2, 0))
2685_0_test_Load(EOS(STATIC_2685), java.lang.Object(ARRAY(matching1)), i750, i1256, i1414) → 3033_0_test_Load(EOS(STATIC_3033), java.lang.Object(ARRAY(3)), i750, i1256, i1414) | =(matching1, 3)
3033_0_test_Load(EOS(STATIC_3033), java.lang.Object(ARRAY(matching1)), i750, i1256, i1538) → 3346_0_test_Load(EOS(STATIC_3346), java.lang.Object(ARRAY(3)), i750, i1256, i1538) | =(matching1, 3)
3346_0_test_Load(EOS(STATIC_3346), java.lang.Object(ARRAY(matching1)), i750, i1256, i1670) → 3696_0_test_Load(EOS(STATIC_3696), java.lang.Object(ARRAY(3)), i750, i1256, i1670) | =(matching1, 3)
3696_0_test_Load(EOS(STATIC_3696), java.lang.Object(ARRAY(matching1)), i750, i1256, i1788) → 4420_0_test_Load(EOS(STATIC_4420), java.lang.Object(ARRAY(3)), i750, i1256, i1788) | =(matching1, 3)
4420_0_test_Load(EOS(STATIC_4420), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126) → 4427_0_test_Load(EOS(STATIC_4427), java.lang.Object(ARRAY(3)), i750, i1256, i2126, i2126) | =(matching1, 3)
4427_0_test_Load(EOS(STATIC_4427), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, i2126) → 4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), i750, i1256, i2126, i2126, i1256) | =(matching1, 3)
4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, i2126, i1256) → 4441_0_test_GE(EOS(STATIC_4441), java.lang.Object(ARRAY(3)), i750, i1256, i2126, i2126, i1256) | =(matching1, 3)
4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, i2126, i1256) → 4442_0_test_GE(EOS(STATIC_4442), java.lang.Object(ARRAY(3)), i750, i1256, i2126, i2126, i1256) | =(matching1, 3)
4441_0_test_GE(EOS(STATIC_4441), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, i2126, i1256) → 4448_0_test_Load(EOS(STATIC_4448), java.lang.Object(ARRAY(3)), i750) | &&(>=(i2126, i1256), =(matching1, 3))
4442_0_test_GE(EOS(STATIC_4442), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, i2126, i1256) → 4449_0_test_Load(EOS(STATIC_4449), java.lang.Object(ARRAY(3)), i750, i1256, i2126) | &&(<(i2126, i1256), =(matching1, 3))
4449_0_test_Load(EOS(STATIC_4449), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126) → 4454_0_test_Load(EOS(STATIC_4454), java.lang.Object(ARRAY(3)), i750, i1256, i2126, java.lang.Object(ARRAY(3))) | =(matching1, 3)
4454_0_test_Load(EOS(STATIC_4454), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, java.lang.Object(ARRAY(matching2))) → 4459_0_test_ArrayAccess(EOS(STATIC_4459), java.lang.Object(ARRAY(3)), i750, i1256, i2126, java.lang.Object(ARRAY(3)), i750) | &&(=(matching1, 3), =(matching2, 3))
4459_0_test_ArrayAccess(EOS(STATIC_4459), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, java.lang.Object(ARRAY(matching2)), i750) → 4464_0_test_InvokeMethod(EOS(STATIC_4464), java.lang.Object(ARRAY(3)), i750, i1256, i2126, o6634) | &&(&&(<(i750, 3), =(matching1, 3)), =(matching2, 3))
4464_0_test_InvokeMethod(EOS(STATIC_4464), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, o6634) → 4467_1_test_InvokeMethod(4467_0_bubble_Load(EOS(STATIC_4467), o6634), java.lang.Object(ARRAY(3)), i750, i1256, i2126, o6634) | =(matching1, 3)
4467_1_test_InvokeMethod(4393_0_bubble_Return(EOS(STATIC_4393), NULL), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, NULL) → 4504_0_bubble_Return(EOS(STATIC_4504), java.lang.Object(ARRAY(3)), i750, i1256, i2126, NULL, NULL) | =(matching1, 3)
4467_1_test_InvokeMethod(4457_0_bubble_Return(EOS(STATIC_4457), java.lang.Object(List(o6668sub))), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, java.lang.Object(List(o6668sub))) → 4507_0_bubble_Return(EOS(STATIC_4507), java.lang.Object(ARRAY(3)), i750, i1256, i2126, java.lang.Object(List(o6668sub)), java.lang.Object(List(o6668sub))) | =(matching1, 3)
4467_1_test_InvokeMethod(4651_0_bubble_Return(EOS(STATIC_4651)), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, o6634) → 4657_0_bubble_Return(EOS(STATIC_4657), java.lang.Object(ARRAY(3)), i750, i1256, i2126, java.lang.Object(List(o6588sub))) | =(matching1, 3)
4467_1_test_InvokeMethod(4673_0_bubble_Return(EOS(STATIC_4673)), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, o6634) → 4680_0_bubble_Return(EOS(STATIC_4680), java.lang.Object(ARRAY(3)), i750, i1256, i2126, java.lang.Object(List(o7021sub))) | =(matching1, 3)
4504_0_bubble_Return(EOS(STATIC_4504), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, NULL, NULL) → 4508_0_bubble_Return(EOS(STATIC_4508), java.lang.Object(ARRAY(3)), i750, i1256, i2126, NULL, NULL) | =(matching1, 3)
4508_0_bubble_Return(EOS(STATIC_4508), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, o6678, o6678) → 4520_0_test_Inc(EOS(STATIC_4520), java.lang.Object(ARRAY(3)), i750, i1256, i2126) | =(matching1, 3)
4520_0_test_Inc(EOS(STATIC_4520), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126) → 4595_0_test_Inc(EOS(STATIC_4595), java.lang.Object(ARRAY(3)), i750, i1256, i2126) | =(matching1, 3)
4595_0_test_Inc(EOS(STATIC_4595), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126) → 4621_0_test_Inc(EOS(STATIC_4621), java.lang.Object(ARRAY(3)), i750, i1256, i2126) | =(matching1, 3)
4621_0_test_Inc(EOS(STATIC_4621), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126) → 4629_0_test_JMP(EOS(STATIC_4629), java.lang.Object(ARRAY(3)), i750, i1256, +(i2126, 1)) | =(matching1, 3)
4629_0_test_JMP(EOS(STATIC_4629), java.lang.Object(ARRAY(matching1)), i750, i1256, i2200) → 4633_0_test_Load(EOS(STATIC_4633), java.lang.Object(ARRAY(3)), i750, i1256, i2200) | =(matching1, 3)
4633_0_test_Load(EOS(STATIC_4633), java.lang.Object(ARRAY(matching1)), i750, i1256, i2200) → 4420_0_test_Load(EOS(STATIC_4420), java.lang.Object(ARRAY(3)), i750, i1256, i2200) | =(matching1, 3)
4507_0_bubble_Return(EOS(STATIC_4507), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, java.lang.Object(List(o6668sub)), java.lang.Object(List(o6668sub))) → 4508_0_bubble_Return(EOS(STATIC_4508), java.lang.Object(ARRAY(3)), i750, i1256, i2126, java.lang.Object(List(o6668sub)), java.lang.Object(List(o6668sub))) | =(matching1, 3)
4657_0_bubble_Return(EOS(STATIC_4657), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, java.lang.Object(List(o6588sub))) → 4613_0_bubble_Return(EOS(STATIC_4613), java.lang.Object(ARRAY(3)), i750, i1256, i2126, java.lang.Object(List(o6588sub))) | =(matching1, 3)
4613_0_bubble_Return(EOS(STATIC_4613), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, java.lang.Object(List(o6881sub))) → 4621_0_test_Inc(EOS(STATIC_4621), java.lang.Object(ARRAY(3)), i750, i1256, i2126) | =(matching1, 3)
4680_0_bubble_Return(EOS(STATIC_4680), java.lang.Object(ARRAY(matching1)), i750, i1256, i2126, java.lang.Object(List(o7021sub))) → 4613_0_bubble_Return(EOS(STATIC_4613), java.lang.Object(ARRAY(3)), i750, i1256, i2126, java.lang.Object(List(o7021sub))) | =(matching1, 3)
2253_0_length_Return(EOS(STATIC_2253), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC)), matching2) → 2254_0_length_Return(EOS(STATIC_2254), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 3), =(matching2, 1))
2262_0_length_Return(EOS(STATIC_2262), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC)), matching2) → 2263_0_length_Return(EOS(STATIC_2263), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 3), =(matching2, 1))
2577_0_length_Return(EOS(STATIC_2577), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC)), i1297) → 2454_0_length_Return(EOS(STATIC_2454), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), i1297) | =(matching1, 3)
2587_0_length_Return(EOS(STATIC_2587), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC)), i1305) → 2454_0_length_Return(EOS(STATIC_2454), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), i1305) | =(matching1, 3)
2600_0_length_Return(EOS(STATIC_2600), java.lang.Object(ARRAY(matching1)), i750, java.lang.Object(List(EOC)), i1317) → 2454_0_length_Return(EOS(STATIC_2454), java.lang.Object(ARRAY(3)), i750, java.lang.Object(List(EOC)), i1317) | =(matching1, 3)
R rules:
2112_0_length_Load(EOS(STATIC_2112), o1796) → 2125_0_length_Load(EOS(STATIC_2125), o1796)
2125_0_length_Load(EOS(STATIC_2125), o1796) → 2146_0_length_Load(EOS(STATIC_2146), o1796)
2146_0_length_Load(EOS(STATIC_2146), o1796) → 2182_0_length_Load(EOS(STATIC_2182), o1796)
2182_0_length_Load(EOS(STATIC_2182), o1796) → 2191_0_length_Load(EOS(STATIC_2191), o1796)
2191_0_length_Load(EOS(STATIC_2191), o1796) → 2205_0_length_Load(EOS(STATIC_2205), o1796)
2205_0_length_Load(EOS(STATIC_2205), o1796) → 1868_0_length_Load(EOS(STATIC_1868), o1796)
4467_0_bubble_Load(EOS(STATIC_4467), o6634) → 4471_0_bubble_Load(EOS(STATIC_4471), o6634)
4471_0_bubble_Load(EOS(STATIC_4471), o6634) → 4475_0_bubble_Load(EOS(STATIC_4475), o6634)
4475_0_bubble_Load(EOS(STATIC_4475), o6634) → 4480_0_bubble_Load(EOS(STATIC_4480), o6634)
4480_0_bubble_Load(EOS(STATIC_4480), o6634) → 4484_0_bubble_Load(EOS(STATIC_4484), o6634)
4484_0_bubble_Load(EOS(STATIC_4484), o6634) → 4489_0_bubble_Load(EOS(STATIC_4489), o6634)
4489_0_bubble_Load(EOS(STATIC_4489), o6634) → 4387_0_bubble_Load(EOS(STATIC_4387), o6634)
1943_0_length_Load(EOS(STATIC_1943), o1171) → 1868_0_length_Load(EOS(STATIC_1868), o1171)
1947_0_length_Load(EOS(STATIC_1947), o1173) → 1868_0_length_Load(EOS(STATIC_1868), o1173)
1953_0_length_Load(EOS(STATIC_1953), o1177) → 1868_0_length_Load(EOS(STATIC_1868), o1177)
4642_0_bubble_Load(EOS(STATIC_4642), java.lang.Object(List(EOC))) → 4387_0_bubble_Load(EOS(STATIC_4387), java.lang.Object(List(EOC)))
1868_0_length_Load(EOS(STATIC_1868), o1157) → 1870_0_length_NONNULL(EOS(STATIC_1870), o1157, o1157)
1870_0_length_NONNULL(EOS(STATIC_1870), java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1871_0_length_NONNULL(EOS(STATIC_1871), java.lang.Object(o1163sub), java.lang.Object(o1163sub))
1870_0_length_NONNULL(EOS(STATIC_1870), NULL, NULL) → 1872_0_length_NONNULL(EOS(STATIC_1872), NULL, NULL)
1871_0_length_NONNULL(EOS(STATIC_1871), java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1874_0_length_ConstantStackPush(EOS(STATIC_1874), java.lang.Object(o1163sub))
1872_0_length_NONNULL(EOS(STATIC_1872), NULL, NULL) → 1875_0_length_ConstantStackPush(EOS(STATIC_1875), NULL)
1874_0_length_ConstantStackPush(EOS(STATIC_1874), java.lang.Object(o1163sub)) → 1877_0_length_Load(EOS(STATIC_1877), java.lang.Object(o1163sub), 1)
1875_0_length_ConstantStackPush(EOS(STATIC_1875), NULL) → 1878_0_length_Return(EOS(STATIC_1878), NULL, 0)
1877_0_length_Load(EOS(STATIC_1877), java.lang.Object(o1163sub), matching1) → 1880_0_length_InvokeMethod(EOS(STATIC_1880), 1, java.lang.Object(o1163sub)) | =(matching1, 1)
1880_0_length_InvokeMethod(EOS(STATIC_1880), matching1, java.lang.Object(o1163sub)) → 1882_0_getTail_Load(EOS(STATIC_1882), 1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) | =(matching1, 1)
1882_0_getTail_Load(EOS(STATIC_1882), matching1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1887_0_getTail_FieldAccess(EOS(STATIC_1887), 1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) | =(matching1, 1)
1887_0_getTail_FieldAccess(EOS(STATIC_1887), matching1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1890_0_getTail_FieldAccess(EOS(STATIC_1890), 1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) | =(matching1, 1)
1887_0_getTail_FieldAccess(EOS(STATIC_1887), matching1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1892_0_getTail_FieldAccess(EOS(STATIC_1892), 1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) | =(matching1, 1)
1890_0_getTail_FieldAccess(EOS(STATIC_1890), matching1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1895_0_getTail_FieldAccess(EOS(STATIC_1895), 1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) | =(matching1, 1)
1890_0_getTail_FieldAccess(EOS(STATIC_1890), matching1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1896_0_getTail_FieldAccess(EOS(STATIC_1896), 1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) | =(matching1, 1)
1892_0_getTail_FieldAccess(EOS(STATIC_1892), matching1, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1897_0_getTail_FieldAccess(EOS(STATIC_1897), 1, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) | =(matching1, 1)
1895_0_getTail_FieldAccess(EOS(STATIC_1895), matching1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1901_0_getTail_FieldAccess(EOS(STATIC_1901), 1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) | =(matching1, 1)
1895_0_getTail_FieldAccess(EOS(STATIC_1895), matching1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) → 1902_0_getTail_FieldAccess(EOS(STATIC_1902), 1, java.lang.Object(o1163sub), java.lang.Object(o1163sub)) | =(matching1, 1)
1896_0_getTail_FieldAccess(EOS(STATIC_1896), matching1, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1903_0_getTail_FieldAccess(EOS(STATIC_1903), 1, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) | =(matching1, 1)
1897_0_getTail_FieldAccess(EOS(STATIC_1897), matching1, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1904_0_getTail_Return(EOS(STATIC_1904), 1, java.lang.Object(List(EOC)), o1171) | =(matching1, 1)
1901_0_getTail_FieldAccess(EOS(STATIC_1901), matching1, java.lang.Object(List(o1174sub)), java.lang.Object(List(o1174sub))) → 1907_0_getTail_FieldAccess(EOS(STATIC_1907), 1, java.lang.Object(List(o1174sub)), java.lang.Object(List(o1174sub))) | =(matching1, 1)
1902_0_getTail_FieldAccess(EOS(STATIC_1902), matching1, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1908_0_getTail_FieldAccess(EOS(STATIC_1908), 1, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) | =(matching1, 1)
1903_0_getTail_FieldAccess(EOS(STATIC_1903), matching1, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1911_0_getTail_Return(EOS(STATIC_1911), 1, java.lang.Object(List(EOC)), o1173) | =(matching1, 1)
1904_0_getTail_Return(EOS(STATIC_1904), matching1, java.lang.Object(List(EOC)), o1171) → 1912_0_length_InvokeMethod(EOS(STATIC_1912), 1, o1171) | =(matching1, 1)
1907_0_getTail_FieldAccess(EOS(STATIC_1907), matching1, java.lang.Object(List(o1174sub)), java.lang.Object(List(o1174sub))) → 1917_0_getTail_Return(EOS(STATIC_1917), 1, java.lang.Object(List(o1174sub)), o1175) | =(matching1, 1)
1908_0_getTail_FieldAccess(EOS(STATIC_1908), matching1, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1921_0_getTail_Return(EOS(STATIC_1921), 1, java.lang.Object(List(EOC)), o1177) | =(matching1, 1)
1911_0_getTail_Return(EOS(STATIC_1911), matching1, java.lang.Object(List(EOC)), o1173) → 1923_0_length_InvokeMethod(EOS(STATIC_1923), 1, o1173) | =(matching1, 1)
1912_0_length_InvokeMethod(EOS(STATIC_1912), matching1, o1171) → 1924_1_length_InvokeMethod(1924_0_length_Load(EOS(STATIC_1924), o1171), 1, o1171) | =(matching1, 1)
1917_0_getTail_Return(EOS(STATIC_1917), matching1, java.lang.Object(List(o1174sub)), o1175) → 1921_0_getTail_Return(EOS(STATIC_1921), 1, java.lang.Object(List(o1174sub)), o1175) | =(matching1, 1)
1921_0_getTail_Return(EOS(STATIC_1921), matching1, java.lang.Object(List(EOC)), o1177) → 1931_0_length_InvokeMethod(EOS(STATIC_1931), 1, o1177) | =(matching1, 1)
1923_0_length_InvokeMethod(EOS(STATIC_1923), matching1, o1173) → 1933_1_length_InvokeMethod(1933_0_length_Load(EOS(STATIC_1933), o1173), 1, o1173) | =(matching1, 1)
1924_0_length_Load(EOS(STATIC_1924), o1171) → 1934_0_length_Load(EOS(STATIC_1934), o1171)
1924_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL, matching1), matching2, NULL) → 1957_0_length_Return(EOS(STATIC_1957), 1, NULL, NULL, 0) | &&(=(matching1, 0), =(matching2, 1))
1924_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970), matching1), matching2, java.lang.Object(List(EOC))) → 1999_0_length_Return(EOS(STATIC_1999), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
1924_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977), matching1), matching2, java.lang.Object(List(EOC))) → 2009_0_length_Return(EOS(STATIC_2009), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
1924_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981), matching1), matching2, java.lang.Object(List(EOC))) → 2023_0_length_Return(EOS(STATIC_2023), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
1924_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496), i1297), matching1, java.lang.Object(List(EOC))) → 2566_0_length_Return(EOS(STATIC_2566), 1, java.lang.Object(List(EOC)), i1297) | =(matching1, 1)
1924_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501), i1305), matching1, java.lang.Object(List(EOC))) → 2579_0_length_Return(EOS(STATIC_2579), 1, java.lang.Object(List(EOC)), i1305) | =(matching1, 1)
1924_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506), i1317), matching1, java.lang.Object(List(EOC))) → 2590_0_length_Return(EOS(STATIC_2590), 1, java.lang.Object(List(EOC)), i1317) | =(matching1, 1)
1931_0_length_InvokeMethod(EOS(STATIC_1931), matching1, o1177) → 1936_1_length_InvokeMethod(1936_0_length_Load(EOS(STATIC_1936), o1177), 1, o1177) | =(matching1, 1)
1933_0_length_Load(EOS(STATIC_1933), o1173) → 1938_0_length_Load(EOS(STATIC_1938), o1173)
1933_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL, matching1), matching2, NULL) → 1962_0_length_Return(EOS(STATIC_1962), 1, NULL, NULL, 0) | &&(=(matching1, 0), =(matching2, 1))
1933_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970), matching1), matching2, java.lang.Object(List(EOC))) → 2000_0_length_Return(EOS(STATIC_2000), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
1933_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977), matching1), matching2, java.lang.Object(List(EOC))) → 2011_0_length_Return(EOS(STATIC_2011), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
1933_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981), matching1), matching2, java.lang.Object(List(EOC))) → 2025_0_length_Return(EOS(STATIC_2025), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
1933_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496), i1297), matching1, java.lang.Object(List(EOC))) → 2569_0_length_Return(EOS(STATIC_2569), 1, java.lang.Object(List(EOC)), i1297) | =(matching1, 1)
1933_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501), i1305), matching1, java.lang.Object(List(EOC))) → 2582_0_length_Return(EOS(STATIC_2582), 1, java.lang.Object(List(EOC)), i1305) | =(matching1, 1)
1933_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506), i1317), matching1, java.lang.Object(List(EOC))) → 2593_0_length_Return(EOS(STATIC_2593), 1, java.lang.Object(List(EOC)), i1317) | =(matching1, 1)
1934_0_length_Load(EOS(STATIC_1934), o1171) → 1943_0_length_Load(EOS(STATIC_1943), o1171)
1936_0_length_Load(EOS(STATIC_1936), o1177) → 1941_0_length_Load(EOS(STATIC_1941), o1177)
1936_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL, matching1), matching2, NULL) → 1966_0_length_Return(EOS(STATIC_1966), 1, NULL, NULL, 0) | &&(=(matching1, 0), =(matching2, 1))
1936_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970), matching1), matching2, java.lang.Object(List(EOC))) → 2001_0_length_Return(EOS(STATIC_2001), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
1936_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977), matching1), matching2, java.lang.Object(List(EOC))) → 2013_0_length_Return(EOS(STATIC_2013), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
1936_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981), matching1), matching2, java.lang.Object(List(EOC))) → 2027_0_length_Return(EOS(STATIC_2027), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
1936_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496), i1297), matching1, java.lang.Object(List(EOC))) → 2573_0_length_Return(EOS(STATIC_2573), 1, java.lang.Object(List(EOC)), i1297) | =(matching1, 1)
1936_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501), i1305), matching1, java.lang.Object(List(EOC))) → 2585_0_length_Return(EOS(STATIC_2585), 1, java.lang.Object(List(EOC)), i1305) | =(matching1, 1)
1936_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506), i1317), matching1, java.lang.Object(List(EOC))) → 2596_0_length_Return(EOS(STATIC_2596), 1, java.lang.Object(List(EOC)), i1317) | =(matching1, 1)
1938_0_length_Load(EOS(STATIC_1938), o1173) → 1947_0_length_Load(EOS(STATIC_1947), o1173)
1941_0_length_Load(EOS(STATIC_1941), o1177) → 1953_0_length_Load(EOS(STATIC_1953), o1177)
1957_0_length_Return(EOS(STATIC_1957), matching1, NULL, NULL, matching2) → 1964_0_length_IntArithmetic(EOS(STATIC_1964), 1, 0) | &&(=(matching1, 1), =(matching2, 0))
1962_0_length_Return(EOS(STATIC_1962), matching1, NULL, NULL, matching2) → 1968_0_length_IntArithmetic(EOS(STATIC_1968), 1, 0) | &&(=(matching1, 1), =(matching2, 0))
1964_0_length_IntArithmetic(EOS(STATIC_1964), matching1, matching2) → 1970_0_length_Return(EOS(STATIC_1970), 1) | &&(=(matching1, 1), =(matching2, 0))
1966_0_length_Return(EOS(STATIC_1966), matching1, NULL, NULL, matching2) → 1975_0_length_IntArithmetic(EOS(STATIC_1975), 1, 0) | &&(=(matching1, 1), =(matching2, 0))
1968_0_length_IntArithmetic(EOS(STATIC_1968), matching1, matching2) → 1977_0_length_Return(EOS(STATIC_1977), 1) | &&(=(matching1, 1), =(matching2, 0))
1975_0_length_IntArithmetic(EOS(STATIC_1975), matching1, matching2) → 1981_0_length_Return(EOS(STATIC_1981), 1) | &&(=(matching1, 1), =(matching2, 0))
1999_0_length_Return(EOS(STATIC_1999), matching1, java.lang.Object(List(EOC)), matching2) → 2072_0_length_Return(EOS(STATIC_2072), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
2000_0_length_Return(EOS(STATIC_2000), matching1, java.lang.Object(List(EOC)), matching2) → 2080_0_length_Return(EOS(STATIC_2080), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
2001_0_length_Return(EOS(STATIC_2001), matching1, java.lang.Object(List(EOC)), matching2) → 2088_0_length_Return(EOS(STATIC_2088), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
2009_0_length_Return(EOS(STATIC_2009), matching1, java.lang.Object(List(EOC)), matching2) → 1999_0_length_Return(EOS(STATIC_1999), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
2011_0_length_Return(EOS(STATIC_2011), matching1, java.lang.Object(List(EOC)), matching2) → 2000_0_length_Return(EOS(STATIC_2000), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
2013_0_length_Return(EOS(STATIC_2013), matching1, java.lang.Object(List(EOC)), matching2) → 2001_0_length_Return(EOS(STATIC_2001), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
2023_0_length_Return(EOS(STATIC_2023), matching1, java.lang.Object(List(EOC)), matching2) → 1999_0_length_Return(EOS(STATIC_1999), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
2025_0_length_Return(EOS(STATIC_2025), matching1, java.lang.Object(List(EOC)), matching2) → 2000_0_length_Return(EOS(STATIC_2000), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
2027_0_length_Return(EOS(STATIC_2027), matching1, java.lang.Object(List(EOC)), matching2) → 2001_0_length_Return(EOS(STATIC_2001), 1, java.lang.Object(List(EOC)), 1) | &&(=(matching1, 1), =(matching2, 1))
2072_0_length_Return(EOS(STATIC_2072), matching1, java.lang.Object(List(EOC)), i800) → 2152_0_length_Return(EOS(STATIC_2152), 1, java.lang.Object(List(EOC)), i800) | =(matching1, 1)
2080_0_length_Return(EOS(STATIC_2080), matching1, java.lang.Object(List(EOC)), i818) → 2160_0_length_Return(EOS(STATIC_2160), 1, java.lang.Object(List(EOC)), i818) | =(matching1, 1)
2088_0_length_Return(EOS(STATIC_2088), matching1, java.lang.Object(List(EOC)), i834) → 2168_0_length_Return(EOS(STATIC_2168), 1, java.lang.Object(List(EOC)), i834) | =(matching1, 1)
2152_0_length_Return(EOS(STATIC_2152), matching1, java.lang.Object(List(EOC)), i926) → 2286_0_length_Return(EOS(STATIC_2286), 1, java.lang.Object(List(EOC)), i926) | =(matching1, 1)
2160_0_length_Return(EOS(STATIC_2160), matching1, java.lang.Object(List(EOC)), i944) → 2294_0_length_Return(EOS(STATIC_2294), 1, java.lang.Object(List(EOC)), i944) | =(matching1, 1)
2168_0_length_Return(EOS(STATIC_2168), matching1, java.lang.Object(List(EOC)), i960) → 2303_0_length_Return(EOS(STATIC_2303), 1, java.lang.Object(List(EOC)), i960) | =(matching1, 1)
2286_0_length_Return(EOS(STATIC_2286), matching1, java.lang.Object(List(EOC)), i1077) → 2426_0_length_Return(EOS(STATIC_2426), 1, java.lang.Object(List(EOC)), i1077) | =(matching1, 1)
2294_0_length_Return(EOS(STATIC_2294), matching1, java.lang.Object(List(EOC)), i1095) → 2437_0_length_Return(EOS(STATIC_2437), 1, java.lang.Object(List(EOC)), i1095) | =(matching1, 1)
2303_0_length_Return(EOS(STATIC_2303), matching1, java.lang.Object(List(EOC)), i1111) → 2447_0_length_Return(EOS(STATIC_2447), 1, java.lang.Object(List(EOC)), i1111) | =(matching1, 1)
2426_0_length_Return(EOS(STATIC_2426), matching1, java.lang.Object(List(EOC)), i1209) → 2482_0_length_IntArithmetic(EOS(STATIC_2482), 1, i1209) | =(matching1, 1)
2437_0_length_Return(EOS(STATIC_2437), matching1, java.lang.Object(List(EOC)), i1227) → 2484_0_length_IntArithmetic(EOS(STATIC_2484), 1, i1227) | =(matching1, 1)
2447_0_length_Return(EOS(STATIC_2447), matching1, java.lang.Object(List(EOC)), i1243) → 2489_0_length_IntArithmetic(EOS(STATIC_2489), 1, i1243) | =(matching1, 1)
2482_0_length_IntArithmetic(EOS(STATIC_2482), matching1, i1209) → 2496_0_length_Return(EOS(STATIC_2496), +(1, i1209)) | &&(>(i1209, 0), =(matching1, 1))
2484_0_length_IntArithmetic(EOS(STATIC_2484), matching1, i1227) → 2501_0_length_Return(EOS(STATIC_2501), +(1, i1227)) | &&(>(i1227, 0), =(matching1, 1))
2489_0_length_IntArithmetic(EOS(STATIC_2489), matching1, i1243) → 2506_0_length_Return(EOS(STATIC_2506), +(1, i1243)) | &&(>(i1243, 0), =(matching1, 1))
2566_0_length_Return(EOS(STATIC_2566), matching1, java.lang.Object(List(EOC)), i1297) → 2426_0_length_Return(EOS(STATIC_2426), 1, java.lang.Object(List(EOC)), i1297) | =(matching1, 1)
2569_0_length_Return(EOS(STATIC_2569), matching1, java.lang.Object(List(EOC)), i1297) → 2437_0_length_Return(EOS(STATIC_2437), 1, java.lang.Object(List(EOC)), i1297) | =(matching1, 1)
2573_0_length_Return(EOS(STATIC_2573), matching1, java.lang.Object(List(EOC)), i1297) → 2447_0_length_Return(EOS(STATIC_2447), 1, java.lang.Object(List(EOC)), i1297) | =(matching1, 1)
2579_0_length_Return(EOS(STATIC_2579), matching1, java.lang.Object(List(EOC)), i1305) → 2426_0_length_Return(EOS(STATIC_2426), 1, java.lang.Object(List(EOC)), i1305) | =(matching1, 1)
2582_0_length_Return(EOS(STATIC_2582), matching1, java.lang.Object(List(EOC)), i1305) → 2437_0_length_Return(EOS(STATIC_2437), 1, java.lang.Object(List(EOC)), i1305) | =(matching1, 1)
2585_0_length_Return(EOS(STATIC_2585), matching1, java.lang.Object(List(EOC)), i1305) → 2447_0_length_Return(EOS(STATIC_2447), 1, java.lang.Object(List(EOC)), i1305) | =(matching1, 1)
2590_0_length_Return(EOS(STATIC_2590), matching1, java.lang.Object(List(EOC)), i1317) → 2426_0_length_Return(EOS(STATIC_2426), 1, java.lang.Object(List(EOC)), i1317) | =(matching1, 1)
2593_0_length_Return(EOS(STATIC_2593), matching1, java.lang.Object(List(EOC)), i1317) → 2437_0_length_Return(EOS(STATIC_2437), 1, java.lang.Object(List(EOC)), i1317) | =(matching1, 1)
2596_0_length_Return(EOS(STATIC_2596), matching1, java.lang.Object(List(EOC)), i1317) → 2447_0_length_Return(EOS(STATIC_2447), 1, java.lang.Object(List(EOC)), i1317) | =(matching1, 1)
2003_0_test_LT(EOS(STATIC_2003), java.lang.Object(ARRAY(matching1)), matching2, matching3) → 2020_0_test_LT(EOS(STATIC_2020), java.lang.Object(ARRAY(3)), -1, -1) | &&(&&(=(matching1, 3), =(matching2, -1)), =(matching3, -1))
2020_0_test_LT(EOS(STATIC_2020), java.lang.Object(ARRAY(matching1)), matching2, matching3) → 2038_0_test_Return(EOS(STATIC_2038)) | &&(&&(&&(<(-1, 0), =(matching1, 3)), =(matching2, -1)), =(matching3, -1))
4469_1_test_InvokeMethod(2038_0_test_Return(EOS(STATIC_2038)), java.lang.Object(ARRAY(matching1)), matching2) → 4483_0_test_Return(EOS(STATIC_4483), java.lang.Object(ARRAY(3)), -1) | &&(=(matching1, 3), =(matching2, -1))
4469_1_test_InvokeMethod(4528_0_test_Return(EOS(STATIC_4528)), java.lang.Object(ARRAY(matching1)), i2155) → 4552_0_test_Return(EOS(STATIC_4552), java.lang.Object(ARRAY(3)), i2155) | =(matching1, 3)
4483_0_test_Return(EOS(STATIC_4483), java.lang.Object(ARRAY(matching1)), matching2) → 4518_0_test_Return(EOS(STATIC_4518), java.lang.Object(ARRAY(3)), -1) | &&(=(matching1, 3), =(matching2, -1))
4518_0_test_Return(EOS(STATIC_4518), java.lang.Object(ARRAY(matching1)), i2143) → 4528_0_test_Return(EOS(STATIC_4528)) | =(matching1, 3)
4552_0_test_Return(EOS(STATIC_4552), java.lang.Object(ARRAY(matching1)), i2155) → 4518_0_test_Return(EOS(STATIC_4518), java.lang.Object(ARRAY(3)), i2155) | =(matching1, 3)
4387_0_bubble_Load(EOS(STATIC_4387), o6540) → 4388_0_bubble_NULL(EOS(STATIC_4388), o6540, o6540)
4388_0_bubble_NULL(EOS(STATIC_4388), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4389_0_bubble_NULL(EOS(STATIC_4389), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4388_0_bubble_NULL(EOS(STATIC_4388), NULL, NULL) → 4390_0_bubble_NULL(EOS(STATIC_4390), NULL, NULL)
4389_0_bubble_NULL(EOS(STATIC_4389), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4392_0_bubble_Load(EOS(STATIC_4392), java.lang.Object(o6546sub))
4390_0_bubble_NULL(EOS(STATIC_4390), NULL, NULL) → 4393_0_bubble_Return(EOS(STATIC_4393), NULL)
4392_0_bubble_Load(EOS(STATIC_4392), java.lang.Object(o6546sub)) → 4394_0_bubble_InvokeMethod(EOS(STATIC_4394), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4394_0_bubble_InvokeMethod(EOS(STATIC_4394), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4397_0_getTail_Load(EOS(STATIC_4397), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4397_0_getTail_Load(EOS(STATIC_4397), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4406_0_getTail_FieldAccess(EOS(STATIC_4406), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4406_0_getTail_FieldAccess(EOS(STATIC_4406), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4410_0_getTail_FieldAccess(EOS(STATIC_4410), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4406_0_getTail_FieldAccess(EOS(STATIC_4406), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4411_0_getTail_FieldAccess(EOS(STATIC_4411), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4410_0_getTail_FieldAccess(EOS(STATIC_4410), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4413_0_getTail_FieldAccess(EOS(STATIC_4413), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4410_0_getTail_FieldAccess(EOS(STATIC_4410), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4414_0_getTail_FieldAccess(EOS(STATIC_4414), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4411_0_getTail_FieldAccess(EOS(STATIC_4411), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 4415_0_getTail_FieldAccess(EOS(STATIC_4415), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
4413_0_getTail_FieldAccess(EOS(STATIC_4413), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4422_0_getTail_FieldAccess(EOS(STATIC_4422), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4413_0_getTail_FieldAccess(EOS(STATIC_4413), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub)) → 4423_0_getTail_FieldAccess(EOS(STATIC_4423), java.lang.Object(o6546sub), java.lang.Object(o6546sub), java.lang.Object(o6546sub))
4414_0_getTail_FieldAccess(EOS(STATIC_4414), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 4424_0_getTail_FieldAccess(EOS(STATIC_4424), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
4415_0_getTail_FieldAccess(EOS(STATIC_4415), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 4425_0_getTail_Return(EOS(STATIC_4425), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o6565)
4422_0_getTail_FieldAccess(EOS(STATIC_4422), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4428_0_getTail_FieldAccess(EOS(STATIC_4428), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4423_0_getTail_FieldAccess(EOS(STATIC_4423), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 4429_0_getTail_FieldAccess(EOS(STATIC_4429), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
4424_0_getTail_FieldAccess(EOS(STATIC_4424), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 4431_0_getTail_Return(EOS(STATIC_4431), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o6583)
4425_0_getTail_Return(EOS(STATIC_4425), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o6565) → 4431_0_getTail_Return(EOS(STATIC_4431), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o6565)
4428_0_getTail_FieldAccess(EOS(STATIC_4428), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4438_0_getTail_Return(EOS(STATIC_4438), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)), o6589)
4429_0_getTail_FieldAccess(EOS(STATIC_4429), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 4439_0_getTail_Return(EOS(STATIC_4439), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o6591)
4431_0_getTail_Return(EOS(STATIC_4431), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o6583) → 4438_0_getTail_Return(EOS(STATIC_4438), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o6583)
4438_0_getTail_Return(EOS(STATIC_4438), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)), o6589) → 4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(o6588sub)), o6589)
4439_0_getTail_Return(EOS(STATIC_4439), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o6591) → 4446_0_bubble_NONNULL(EOS(STATIC_4446), java.lang.Object(List(EOC)), o6591)
4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(o6588sub)), java.lang.Object(o6632sub)) → 4451_0_bubble_NONNULL(EOS(STATIC_4451), java.lang.Object(List(o6588sub)), java.lang.Object(o6632sub))
4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(o6588sub)), NULL) → 4452_0_bubble_NONNULL(EOS(STATIC_4452), java.lang.Object(List(o6588sub)), NULL)
4446_0_bubble_NONNULL(EOS(STATIC_4446), java.lang.Object(List(EOC)), o6591) → 4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(EOC)), o6591)
4451_0_bubble_NONNULL(EOS(STATIC_4451), java.lang.Object(List(o6588sub)), java.lang.Object(o6632sub)) → 4455_0_bubble_Load(EOS(STATIC_4455), java.lang.Object(List(o6588sub)))
4452_0_bubble_NONNULL(EOS(STATIC_4452), java.lang.Object(List(o6588sub)), NULL) → 4457_0_bubble_Return(EOS(STATIC_4457), java.lang.Object(List(o6588sub)))
4455_0_bubble_Load(EOS(STATIC_4455), java.lang.Object(List(o6588sub))) → 4460_0_bubble_FieldAccess(EOS(STATIC_4460), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4460_0_bubble_FieldAccess(EOS(STATIC_4460), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4465_0_bubble_Load(EOS(STATIC_4465), java.lang.Object(List(o6588sub)), i2129)
4465_0_bubble_Load(EOS(STATIC_4465), java.lang.Object(List(o6588sub)), i2129) → 4468_0_bubble_InvokeMethod(EOS(STATIC_4468), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)))
4468_0_bubble_InvokeMethod(EOS(STATIC_4468), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub))) → 4472_0_getTail_Load(EOS(STATIC_4472), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4472_0_getTail_Load(EOS(STATIC_4472), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4476_0_getTail_FieldAccess(EOS(STATIC_4476), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4476_0_getTail_FieldAccess(EOS(STATIC_4476), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4482_0_getTail_Return(EOS(STATIC_4482), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(o6632sub))
4482_0_getTail_Return(EOS(STATIC_4482), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(o6632sub)) → 4486_0_bubble_FieldAccess(EOS(STATIC_4486), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub))
4486_0_bubble_FieldAccess(EOS(STATIC_4486), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub)) → 4491_0_bubble_FieldAccess(EOS(STATIC_4491), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub))
4486_0_bubble_FieldAccess(EOS(STATIC_4486), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub)) → 4492_0_bubble_FieldAccess(EOS(STATIC_4492), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub))
4491_0_bubble_FieldAccess(EOS(STATIC_4491), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub)) → 4499_0_bubble_FieldAccess(EOS(STATIC_4499), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub))
4491_0_bubble_FieldAccess(EOS(STATIC_4491), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub)) → 4500_0_bubble_FieldAccess(EOS(STATIC_4500), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub))
4492_0_bubble_FieldAccess(EOS(STATIC_4492), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC))) → 4501_0_bubble_FieldAccess(EOS(STATIC_4501), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC)))
4499_0_bubble_FieldAccess(EOS(STATIC_4499), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub)) → 4509_0_bubble_FieldAccess(EOS(STATIC_4509), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub))
4499_0_bubble_FieldAccess(EOS(STATIC_4499), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub)) → 4510_0_bubble_FieldAccess(EOS(STATIC_4510), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(o6632sub))
4500_0_bubble_FieldAccess(EOS(STATIC_4500), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC))) → 4512_0_bubble_FieldAccess(EOS(STATIC_4512), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC)))
4501_0_bubble_FieldAccess(EOS(STATIC_4501), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC))) → 4513_0_bubble_LE(EOS(STATIC_4513), java.lang.Object(List(o6588sub)), i2129, i2139)
4509_0_bubble_FieldAccess(EOS(STATIC_4509), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC))) → 4521_0_bubble_FieldAccess(EOS(STATIC_4521), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC)))
4510_0_bubble_FieldAccess(EOS(STATIC_4510), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC))) → 4522_0_bubble_FieldAccess(EOS(STATIC_4522), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC)))
4512_0_bubble_FieldAccess(EOS(STATIC_4512), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC))) → 4525_0_bubble_LE(EOS(STATIC_4525), java.lang.Object(List(o6588sub)), i2129, i2142)
4513_0_bubble_LE(EOS(STATIC_4513), java.lang.Object(List(o6588sub)), i2129, i2139) → 4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(o6588sub)), i2129, i2139)
4521_0_bubble_FieldAccess(EOS(STATIC_4521), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC))) → 4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(o6588sub)), i2129, i2144)
4522_0_bubble_FieldAccess(EOS(STATIC_4522), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC))) → 4538_0_bubble_LE(EOS(STATIC_4538), java.lang.Object(List(o6588sub)), i2129, i2145)
4525_0_bubble_LE(EOS(STATIC_4525), java.lang.Object(List(o6588sub)), i2129, i2142) → 4513_0_bubble_LE(EOS(STATIC_4513), java.lang.Object(List(o6588sub)), i2129, i2142)
4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(o6588sub)), i2129, i2144) → 4543_0_bubble_LE(EOS(STATIC_4543), java.lang.Object(List(o6588sub)), i2129, i2144)
4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(o6588sub)), i2129, i2144) → 4544_0_bubble_LE(EOS(STATIC_4544), java.lang.Object(List(o6588sub)), i2129, i2144)
4538_0_bubble_LE(EOS(STATIC_4538), java.lang.Object(List(o6588sub)), i2129, i2145) → 4534_0_bubble_LE(EOS(STATIC_4534), java.lang.Object(List(o6588sub)), i2129, i2145)
4543_0_bubble_LE(EOS(STATIC_4543), java.lang.Object(List(o6588sub)), i2129, i2144) → 4547_0_bubble_Load(EOS(STATIC_4547), java.lang.Object(List(o6588sub))) | <=(i2129, i2144)
4544_0_bubble_LE(EOS(STATIC_4544), java.lang.Object(List(o6588sub)), i2129, i2144) → 4548_0_bubble_Load(EOS(STATIC_4548), java.lang.Object(List(o6588sub))) | >(i2129, i2144)
4547_0_bubble_Load(EOS(STATIC_4547), java.lang.Object(List(o6588sub))) → 4628_0_bubble_Load(EOS(STATIC_4628), java.lang.Object(List(o6588sub)))
4548_0_bubble_Load(EOS(STATIC_4548), java.lang.Object(List(o6588sub))) → 4554_0_bubble_FieldAccess(EOS(STATIC_4554), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4554_0_bubble_FieldAccess(EOS(STATIC_4554), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4557_0_bubble_Store(EOS(STATIC_4557), java.lang.Object(List(o6588sub)), i2129)
4557_0_bubble_Store(EOS(STATIC_4557), java.lang.Object(List(o6588sub)), i2129) → 4558_0_bubble_Load(EOS(STATIC_4558), java.lang.Object(List(o6588sub)), i2129)
4558_0_bubble_Load(EOS(STATIC_4558), java.lang.Object(List(o6588sub)), i2129) → 4561_0_bubble_Load(EOS(STATIC_4561), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)))
4561_0_bubble_Load(EOS(STATIC_4561), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub))) → 4564_0_bubble_InvokeMethod(EOS(STATIC_4564), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4564_0_bubble_InvokeMethod(EOS(STATIC_4564), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4567_0_getTail_Load(EOS(STATIC_4567), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4567_0_getTail_Load(EOS(STATIC_4567), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4571_0_getTail_FieldAccess(EOS(STATIC_4571), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4571_0_getTail_FieldAccess(EOS(STATIC_4571), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4573_0_getTail_Return(EOS(STATIC_4573), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)), java.lang.Object(List(EOC)))
4573_0_getTail_Return(EOS(STATIC_4573), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)), java.lang.Object(List(EOC))) → 4578_0_bubble_FieldAccess(EOS(STATIC_4578), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(EOC)))
4578_0_bubble_FieldAccess(EOS(STATIC_4578), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(EOC))) → 4582_0_bubble_FieldAccess(EOS(STATIC_4582), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), i2144)
4582_0_bubble_FieldAccess(EOS(STATIC_4582), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), i2144) → 4584_0_bubble_Load(EOS(STATIC_4584), java.lang.Object(List(o6588sub)), i2129)
4584_0_bubble_Load(EOS(STATIC_4584), java.lang.Object(List(o6588sub)), i2129) → 4587_0_bubble_InvokeMethod(EOS(STATIC_4587), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)))
4587_0_bubble_InvokeMethod(EOS(STATIC_4587), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub))) → 4591_0_getTail_Load(EOS(STATIC_4591), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4591_0_getTail_Load(EOS(STATIC_4591), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4598_0_getTail_FieldAccess(EOS(STATIC_4598), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4598_0_getTail_FieldAccess(EOS(STATIC_4598), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4603_0_getTail_Return(EOS(STATIC_4603), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(EOC)))
4603_0_getTail_Return(EOS(STATIC_4603), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(o6588sub)), java.lang.Object(List(EOC))) → 4609_0_bubble_Load(EOS(STATIC_4609), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC)))
4609_0_bubble_Load(EOS(STATIC_4609), java.lang.Object(List(o6588sub)), i2129, java.lang.Object(List(EOC))) → 4619_0_bubble_FieldAccess(EOS(STATIC_4619), java.lang.Object(List(o6588sub)), java.lang.Object(List(EOC)), i2129)
4619_0_bubble_FieldAccess(EOS(STATIC_4619), java.lang.Object(List(o6588sub)), java.lang.Object(List(EOC)), i2129) → 4628_0_bubble_Load(EOS(STATIC_4628), java.lang.Object(List(o6588sub)))
4628_0_bubble_Load(EOS(STATIC_4628), java.lang.Object(List(o6588sub))) → 4631_0_bubble_InvokeMethod(EOS(STATIC_4631), java.lang.Object(List(o6588sub)))
4631_0_bubble_InvokeMethod(EOS(STATIC_4631), java.lang.Object(List(o6588sub))) → 4635_0_getTail_Load(EOS(STATIC_4635), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4635_0_getTail_Load(EOS(STATIC_4635), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4637_0_getTail_FieldAccess(EOS(STATIC_4637), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub)))
4637_0_getTail_FieldAccess(EOS(STATIC_4637), java.lang.Object(List(o6588sub)), java.lang.Object(List(o6588sub))) → 4639_0_getTail_Return(EOS(STATIC_4639), java.lang.Object(List(o6588sub)), java.lang.Object(List(EOC)))
4639_0_getTail_Return(EOS(STATIC_4639), java.lang.Object(List(o6588sub)), java.lang.Object(List(EOC))) → 4640_0_bubble_InvokeMethod(EOS(STATIC_4640), java.lang.Object(List(EOC)))
4640_0_bubble_InvokeMethod(EOS(STATIC_4640), java.lang.Object(List(EOC))) → 4641_1_bubble_InvokeMethod(4641_0_bubble_Load(EOS(STATIC_4641), java.lang.Object(List(EOC))), java.lang.Object(List(EOC)))
4641_0_bubble_Load(EOS(STATIC_4641), java.lang.Object(List(EOC))) → 4642_0_bubble_Load(EOS(STATIC_4642), java.lang.Object(List(EOC)))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(EOS(STATIC_4457), java.lang.Object(List(EOC))), java.lang.Object(List(EOC))) → 4650_0_bubble_Return(EOS(STATIC_4650), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
4641_1_bubble_InvokeMethod(4651_0_bubble_Return(EOS(STATIC_4651)), java.lang.Object(List(EOC))) → 4658_0_bubble_Return(EOS(STATIC_4658), java.lang.Object(List(EOC)))
4641_1_bubble_InvokeMethod(4673_0_bubble_Return(EOS(STATIC_4673)), java.lang.Object(List(EOC))) → 4684_0_bubble_Return(EOS(STATIC_4684), java.lang.Object(List(EOC)))
4650_0_bubble_Return(EOS(STATIC_4650), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 4651_0_bubble_Return(EOS(STATIC_4651))
4658_0_bubble_Return(EOS(STATIC_4658), java.lang.Object(List(EOC))) → 4671_0_bubble_Return(EOS(STATIC_4671), java.lang.Object(List(EOC)))
4671_0_bubble_Return(EOS(STATIC_4671), java.lang.Object(List(EOC))) → 4673_0_bubble_Return(EOS(STATIC_4673))
4684_0_bubble_Return(EOS(STATIC_4684), java.lang.Object(List(EOC))) → 4671_0_bubble_Return(EOS(STATIC_4671), java.lang.Object(List(EOC)))

Combined rules. Obtained 13 conditional rules for P and 37 conditional rules for R.


P rules:
2112_1_test_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL, 0), java.lang.Object(ARRAY(3)), x2, NULL) → 4469_1_test_InvokeMethod(2112_1_test_InvokeMethod(2112_0_length_Load(EOS(STATIC_2112), x3), java.lang.Object(ARRAY(3)), -(x2, 1), x3), java.lang.Object(ARRAY(3)), -(x2, 1)) | &&(>(+(x2, 1), 1), <(x2, 4))
2112_1_test_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496), x0), java.lang.Object(ARRAY(3)), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x2, x0, 0, 0, x0)
2112_1_test_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501), x0), java.lang.Object(ARRAY(3)), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x2, x0, 0, 0, x0)
2112_1_test_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506), x0), java.lang.Object(ARRAY(3)), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x2, x0, 0, 0, x0)
2112_1_test_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981), 1), java.lang.Object(ARRAY(3)), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x2, 1, 0, 0, 1)
2112_1_test_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970), 1), java.lang.Object(ARRAY(3)), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x2, 1, 0, 0, 1)
2112_1_test_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977), 1), java.lang.Object(ARRAY(3)), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x2, 1, 0, 0, 1)
4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x1, x2, x3, x3, x2) → 4469_1_test_InvokeMethod(2112_1_test_InvokeMethod(2112_0_length_Load(EOS(STATIC_2112), x4), java.lang.Object(ARRAY(3)), -(x1, 1), x4), java.lang.Object(ARRAY(3)), -(x1, 1)) | &&(&&(>=(x3, x2), >(+(x1, 1), 1)), <(x1, 4))
4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x1, x2, x3, x3, x2) → 4467_1_test_InvokeMethod(4467_0_bubble_Load(EOS(STATIC_4467), x4), java.lang.Object(ARRAY(3)), x1, x2, x3, x4) | &&(<(x3, x2), <(x1, 3))
4467_1_test_InvokeMethod(4393_0_bubble_Return(EOS(STATIC_4393), NULL), java.lang.Object(ARRAY(3)), x1, x2, x3, NULL) → 4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x1, x2, +(x3, 1), +(x3, 1), x2)
4467_1_test_InvokeMethod(4457_0_bubble_Return(EOS(STATIC_4457), java.lang.Object(List(x0))), java.lang.Object(ARRAY(3)), x2, x3, x4, java.lang.Object(List(x0))) → 4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x2, x3, +(x4, 1), +(x4, 1), x3)
4467_1_test_InvokeMethod(4651_0_bubble_Return(EOS(STATIC_4651)), java.lang.Object(ARRAY(3)), x1, x2, x3, x4) → 4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x1, x2, +(x3, 1), +(x3, 1), x2)
4467_1_test_InvokeMethod(4673_0_bubble_Return(EOS(STATIC_4673)), java.lang.Object(ARRAY(3)), x1, x2, x3, x4) → 4434_0_test_GE(EOS(STATIC_4434), java.lang.Object(ARRAY(3)), x1, x2, +(x3, 1), +(x3, 1), x2)
R rules:
2112_0_length_Load(EOS(STATIC_2112), x0) → 1870_0_length_NONNULL(EOS(STATIC_1870), x0, x0)
4467_0_bubble_Load(EOS(STATIC_4467), x0) → 4388_0_bubble_NULL(EOS(STATIC_4388), x0, x0)
1870_0_length_NONNULL(EOS(STATIC_1870), NULL, NULL) → 1878_0_length_Return(EOS(STATIC_1878), NULL, 0)
1870_0_length_NONNULL(EOS(STATIC_1870), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1924_1_length_InvokeMethod(1870_0_length_NONNULL(EOS(STATIC_1870), x0, x0), 1, x0)
1870_0_length_NONNULL(EOS(STATIC_1870), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1933_1_length_InvokeMethod(1870_0_length_NONNULL(EOS(STATIC_1870), x0, x0), 1, x0)
1870_0_length_NONNULL(EOS(STATIC_1870), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1936_1_length_InvokeMethod(1870_0_length_NONNULL(EOS(STATIC_1870), x0, x0), 1, x0)
1924_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL, 0), 1, NULL) → 1970_0_length_Return(EOS(STATIC_1970), 1)
1933_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL, 0), 1, NULL) → 1977_0_length_Return(EOS(STATIC_1977), 1)
1936_1_length_InvokeMethod(1878_0_length_Return(EOS(STATIC_1878), NULL, 0), 1, NULL) → 1981_0_length_Return(EOS(STATIC_1981), 1)
1924_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496), x0), 1, java.lang.Object(List(EOC))) → 2496_0_length_Return(EOS(STATIC_2496), +(1, x0)) | >(x0, 0)
1924_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501), x0), 1, java.lang.Object(List(EOC))) → 2496_0_length_Return(EOS(STATIC_2496), +(1, x0)) | >(x0, 0)
1924_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506), x0), 1, java.lang.Object(List(EOC))) → 2496_0_length_Return(EOS(STATIC_2496), +(1, x0)) | >(x0, 0)
1924_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970), 1), 1, java.lang.Object(List(EOC))) → 2496_0_length_Return(EOS(STATIC_2496), 2)
1924_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977), 1), 1, java.lang.Object(List(EOC))) → 2496_0_length_Return(EOS(STATIC_2496), 2)
1924_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981), 1), 1, java.lang.Object(List(EOC))) → 2496_0_length_Return(EOS(STATIC_2496), 2)
1933_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496), x0), 1, java.lang.Object(List(EOC))) → 2501_0_length_Return(EOS(STATIC_2501), +(1, x0)) | >(x0, 0)
1933_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501), x0), 1, java.lang.Object(List(EOC))) → 2501_0_length_Return(EOS(STATIC_2501), +(1, x0)) | >(x0, 0)
1933_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506), x0), 1, java.lang.Object(List(EOC))) → 2501_0_length_Return(EOS(STATIC_2501), +(1, x0)) | >(x0, 0)
1933_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970), 1), 1, java.lang.Object(List(EOC))) → 2501_0_length_Return(EOS(STATIC_2501), 2)
1933_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977), 1), 1, java.lang.Object(List(EOC))) → 2501_0_length_Return(EOS(STATIC_2501), 2)
1933_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981), 1), 1, java.lang.Object(List(EOC))) → 2501_0_length_Return(EOS(STATIC_2501), 2)
1936_1_length_InvokeMethod(2496_0_length_Return(EOS(STATIC_2496), x0), 1, java.lang.Object(List(EOC))) → 2506_0_length_Return(EOS(STATIC_2506), +(1, x0)) | >(x0, 0)
1936_1_length_InvokeMethod(2501_0_length_Return(EOS(STATIC_2501), x0), 1, java.lang.Object(List(EOC))) → 2506_0_length_Return(EOS(STATIC_2506), +(1, x0)) | >(x0, 0)
1936_1_length_InvokeMethod(2506_0_length_Return(EOS(STATIC_2506), x0), 1, java.lang.Object(List(EOC))) → 2506_0_length_Return(EOS(STATIC_2506), +(1, x0)) | >(x0, 0)
1936_1_length_InvokeMethod(1970_0_length_Return(EOS(STATIC_1970), 1), 1, java.lang.Object(List(EOC))) → 2506_0_length_Return(EOS(STATIC_2506), 2)
1936_1_length_InvokeMethod(1977_0_length_Return(EOS(STATIC_1977), 1), 1, java.lang.Object(List(EOC))) → 2506_0_length_Return(EOS(STATIC_2506), 2)
1936_1_length_InvokeMethod(1981_0_length_Return(EOS(STATIC_1981), 1), 1, java.lang.Object(List(EOC))) → 2506_0_length_Return(EOS(STATIC_2506), 2)
4469_1_test_InvokeMethod(2038_0_test_Return(EOS(STATIC_2038)), java.lang.Object(ARRAY(3)), -1) → 4528_0_test_Return(EOS(STATIC_4528))
4469_1_test_InvokeMethod(4528_0_test_Return(EOS(STATIC_4528)), java.lang.Object(ARRAY(3)), x1) → 4528_0_test_Return(EOS(STATIC_4528))
4388_0_bubble_NULL(EOS(STATIC_4388), NULL, NULL) → 4393_0_bubble_Return(EOS(STATIC_4393), NULL)
4388_0_bubble_NULL(EOS(STATIC_4388), java.lang.Object(List(x0)), java.lang.Object(List(x0))) → 4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(x0)), x1)
4388_0_bubble_NULL(EOS(STATIC_4388), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(EOC)), x0)
4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(x0)), NULL) → 4457_0_bubble_Return(EOS(STATIC_4457), java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(EOS(STATIC_4443), java.lang.Object(List(x0)), java.lang.Object(x1)) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(EOS(STATIC_4388), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))), java.lang.Object(List(EOC)))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(EOS(STATIC_4457), java.lang.Object(List(EOC))), java.lang.Object(List(EOC))) → 4651_0_bubble_Return(EOS(STATIC_4651))
4641_1_bubble_InvokeMethod(4651_0_bubble_Return(EOS(STATIC_4651)), java.lang.Object(List(EOC))) → 4673_0_bubble_Return(EOS(STATIC_4673))
4641_1_bubble_InvokeMethod(4673_0_bubble_Return(EOS(STATIC_4673)), java.lang.Object(List(EOC))) → 4673_0_bubble_Return(EOS(STATIC_4673))

Filtered ground terms:



4434_0_test_GE(x1, x2, x3, x4, x5, x6, x7) → 4434_0_test_GE(x3, x4, x5, x6, x7)
ARRAY(x1) → ARRAY
4467_1_test_InvokeMethod(x1, x2, x3, x4, x5, x6) → 4467_1_test_InvokeMethod(x1, x3, x4, x5, x6)
4673_0_bubble_Return(x1) → 4673_0_bubble_Return
4651_0_bubble_Return(x1) → 4651_0_bubble_Return
4457_0_bubble_Return(x1, x2) → 4457_0_bubble_Return(x2)
4393_0_bubble_Return(x1, x2) → 4393_0_bubble_Return
4467_0_bubble_Load(x1, x2) → 4467_0_bubble_Load(x2)
Cond_4434_0_test_GE1(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_4434_0_test_GE1(x1, x4, x5, x6, x7, x8, x9)
4469_1_test_InvokeMethod(x1, x2, x3) → 4469_1_test_InvokeMethod(x1, x3)
2112_0_length_Load(x1, x2) → 2112_0_length_Load(x2)
2112_1_test_InvokeMethod(x1, x2, x3, x4) → 2112_1_test_InvokeMethod(x1, x3, x4)
Cond_4434_0_test_GE(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_4434_0_test_GE(x1, x4, x5, x6, x7, x8, x9)
1977_0_length_Return(x1, x2) → 1977_0_length_Return
1970_0_length_Return(x1, x2) → 1970_0_length_Return
1981_0_length_Return(x1, x2) → 1981_0_length_Return
2506_0_length_Return(x1, x2) → 2506_0_length_Return(x2)
2501_0_length_Return(x1, x2) → 2501_0_length_Return(x2)
2496_0_length_Return(x1, x2) → 2496_0_length_Return(x2)
Cond_2112_1_test_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_2112_1_test_InvokeMethod(x1, x4, x6)
1878_0_length_Return(x1, x2, x3) → 1878_0_length_Return
4641_1_bubble_InvokeMethod(x1, x2) → 4641_1_bubble_InvokeMethod(x1)
4388_0_bubble_NULL(x1, x2, x3) → 4388_0_bubble_NULL(x2, x3)
4443_0_bubble_NONNULL(x1, x2, x3) → 4443_0_bubble_NONNULL(x2, x3)
4528_0_test_Return(x1) → 4528_0_test_Return
2038_0_test_Return(x1) → 2038_0_test_Return
1936_1_length_InvokeMethod(x1, x2, x3) → 1936_1_length_InvokeMethod(x1, x3)
Cond_1936_1_length_InvokeMethod2(x1, x2, x3, x4) → Cond_1936_1_length_InvokeMethod2(x1, x2)
Cond_1936_1_length_InvokeMethod1(x1, x2, x3, x4) → Cond_1936_1_length_InvokeMethod1(x1, x2)
Cond_1936_1_length_InvokeMethod(x1, x2, x3, x4) → Cond_1936_1_length_InvokeMethod(x1, x2)
1933_1_length_InvokeMethod(x1, x2, x3) → 1933_1_length_InvokeMethod(x1, x3)
Cond_1933_1_length_InvokeMethod2(x1, x2, x3, x4) → Cond_1933_1_length_InvokeMethod2(x1, x2)
Cond_1933_1_length_InvokeMethod1(x1, x2, x3, x4) → Cond_1933_1_length_InvokeMethod1(x1, x2)
Cond_1933_1_length_InvokeMethod(x1, x2, x3, x4) → Cond_1933_1_length_InvokeMethod(x1, x2)
1924_1_length_InvokeMethod(x1, x2, x3) → 1924_1_length_InvokeMethod(x1, x3)
Cond_1924_1_length_InvokeMethod2(x1, x2, x3, x4) → Cond_1924_1_length_InvokeMethod2(x1, x2)
Cond_1924_1_length_InvokeMethod1(x1, x2, x3, x4) → Cond_1924_1_length_InvokeMethod1(x1, x2)
Cond_1924_1_length_InvokeMethod(x1, x2, x3, x4) → Cond_1924_1_length_InvokeMethod(x1, x2)
1870_0_length_NONNULL(x1, x2, x3) → 1870_0_length_NONNULL(x2, x3)

Filtered duplicate args:



4434_0_test_GE(x1, x2, x3, x4, x5) → 4434_0_test_GE(x1, x4, x5)
Cond_4434_0_test_GE(x1, x2, x3, x4, x5, x6, x7) → Cond_4434_0_test_GE(x1, x2, x5, x6, x7)
Cond_4434_0_test_GE1(x1, x2, x3, x4, x5, x6, x7) → Cond_4434_0_test_GE1(x1, x2, x5, x6, x7)
1870_0_length_NONNULL(x1, x2) → 1870_0_length_NONNULL(x2)
4388_0_bubble_NULL(x1, x2) → 4388_0_bubble_NULL(x2)

Filtered unneeded arguments:



Cond_4434_0_test_GE(x1, x2, x3, x4, x5) → Cond_4434_0_test_GE(x1, x2, x5)

Filtered free variables in P:



1924_1_length_InvokeMethod(x1, x2) → 1924_1_length_InvokeMethod(x1)
1870_0_length_NONNULL(x1) → 1870_0_length_NONNULL
1933_1_length_InvokeMethod(x1, x2) → 1933_1_length_InvokeMethod(x1)
1936_1_length_InvokeMethod(x1, x2) → 1936_1_length_InvokeMethod(x1)
4443_0_bubble_NONNULL(x1, x2) → 4443_0_bubble_NONNULL(x1)

Current set of rules:


P rules:
2112_1_test_InvokeMethod(1878_0_length_Return, x2, NULL) → Cond_2112_1_test_InvokeMethod(&&(>(+(x2, 1), 1), <(x2, 4)), x2, x3)
Cond_2112_1_test_InvokeMethod(TRUE, x2, x3) → 4469_1_test_InvokeMethod(2112_1_test_InvokeMethod(2112_0_length_Load(x3), -(x2, 1), x3), -(x2, 1))
2112_1_test_InvokeMethod(2496_0_length_Return(x0), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, x0)
2112_1_test_InvokeMethod(2501_0_length_Return(x0), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, x0)
2112_1_test_InvokeMethod(2506_0_length_Return(x0), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, x0)
2112_1_test_InvokeMethod(1981_0_length_Return, x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, 1)
2112_1_test_InvokeMethod(1970_0_length_Return, x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, 1)
2112_1_test_InvokeMethod(1977_0_length_Return, x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, 1)
4434_0_test_GE(x1, x3, x2) → Cond_4434_0_test_GE(&&(&&(>=(x3, x2), >(+(x1, 1), 1)), <(x1, 4)), x1, x4)
Cond_4434_0_test_GE(TRUE, x1, x4) → 4469_1_test_InvokeMethod(2112_1_test_InvokeMethod(2112_0_length_Load(x4), -(x1, 1), x4), -(x1, 1))
4434_0_test_GE(x1, x3, x2) → Cond_4434_0_test_GE1(&&(<(x3, x2), <(x1, 3)), x1, x3, x2, x4)
Cond_4434_0_test_GE1(TRUE, x1, x3, x2, x4) → 4467_1_test_InvokeMethod(4467_0_bubble_Load(x4), x1, x2, x3, x4)
4467_1_test_InvokeMethod(4393_0_bubble_Return, x1, x2, x3, NULL) → 4434_0_test_GE(x1, +(x3, 1), x2)
4467_1_test_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(x0))), x2, x3, x4, java.lang.Object(List(x0))) → 4434_0_test_GE(x2, +(x4, 1), x3)
4467_1_test_InvokeMethod(4651_0_bubble_Return, x1, x2, x3, x4) → 4434_0_test_GE(x1, +(x3, 1), x2)
4467_1_test_InvokeMethod(4673_0_bubble_Return, x1, x2, x3, x4) → 4434_0_test_GE(x1, +(x3, 1), x2)
R rules:
2112_0_length_Load(x0) → 1870_0_length_NONNULL
4467_0_bubble_Load(x0) → 4388_0_bubble_NULL(x0)
1870_0_length_NONNULL1878_0_length_Return
1870_0_length_NONNULL1924_1_length_InvokeMethod(1870_0_length_NONNULL)
1870_0_length_NONNULL1933_1_length_InvokeMethod(1870_0_length_NONNULL)
1870_0_length_NONNULL1936_1_length_InvokeMethod(1870_0_length_NONNULL)
1924_1_length_InvokeMethod(1878_0_length_Return) → 1970_0_length_Return
1933_1_length_InvokeMethod(1878_0_length_Return) → 1977_0_length_Return
1936_1_length_InvokeMethod(1878_0_length_Return) → 1981_0_length_Return
1924_1_length_InvokeMethod(2496_0_length_Return(x0)) → Cond_1924_1_length_InvokeMethod(>(x0, 0), 2496_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0)) → 2496_0_length_Return(+(1, x0))
1924_1_length_InvokeMethod(2501_0_length_Return(x0)) → Cond_1924_1_length_InvokeMethod1(>(x0, 0), 2501_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod1(TRUE, 2501_0_length_Return(x0)) → 2496_0_length_Return(+(1, x0))
1924_1_length_InvokeMethod(2506_0_length_Return(x0)) → Cond_1924_1_length_InvokeMethod2(>(x0, 0), 2506_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod2(TRUE, 2506_0_length_Return(x0)) → 2496_0_length_Return(+(1, x0))
1924_1_length_InvokeMethod(1970_0_length_Return) → 2496_0_length_Return(2)
1924_1_length_InvokeMethod(1977_0_length_Return) → 2496_0_length_Return(2)
1924_1_length_InvokeMethod(1981_0_length_Return) → 2496_0_length_Return(2)
1933_1_length_InvokeMethod(2496_0_length_Return(x0)) → Cond_1933_1_length_InvokeMethod(>(x0, 0), 2496_0_length_Return(x0))
Cond_1933_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0)) → 2501_0_length_Return(+(1, x0))
1933_1_length_InvokeMethod(2501_0_length_Return(x0)) → Cond_1933_1_length_InvokeMethod1(>(x0, 0), 2501_0_length_Return(x0))
Cond_1933_1_length_InvokeMethod1(TRUE, 2501_0_length_Return(x0)) → 2501_0_length_Return(+(1, x0))
1933_1_length_InvokeMethod(2506_0_length_Return(x0)) → Cond_1933_1_length_InvokeMethod2(>(x0, 0), 2506_0_length_Return(x0))
Cond_1933_1_length_InvokeMethod2(TRUE, 2506_0_length_Return(x0)) → 2501_0_length_Return(+(1, x0))
1933_1_length_InvokeMethod(1970_0_length_Return) → 2501_0_length_Return(2)
1933_1_length_InvokeMethod(1977_0_length_Return) → 2501_0_length_Return(2)
1933_1_length_InvokeMethod(1981_0_length_Return) → 2501_0_length_Return(2)
1936_1_length_InvokeMethod(2496_0_length_Return(x0)) → Cond_1936_1_length_InvokeMethod(>(x0, 0), 2496_0_length_Return(x0))
Cond_1936_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0)) → 2506_0_length_Return(+(1, x0))
1936_1_length_InvokeMethod(2501_0_length_Return(x0)) → Cond_1936_1_length_InvokeMethod1(>(x0, 0), 2501_0_length_Return(x0))
Cond_1936_1_length_InvokeMethod1(TRUE, 2501_0_length_Return(x0)) → 2506_0_length_Return(+(1, x0))
1936_1_length_InvokeMethod(2506_0_length_Return(x0)) → Cond_1936_1_length_InvokeMethod2(>(x0, 0), 2506_0_length_Return(x0))
Cond_1936_1_length_InvokeMethod2(TRUE, 2506_0_length_Return(x0)) → 2506_0_length_Return(+(1, x0))
1936_1_length_InvokeMethod(1970_0_length_Return) → 2506_0_length_Return(2)
1936_1_length_InvokeMethod(1977_0_length_Return) → 2506_0_length_Return(2)
1936_1_length_InvokeMethod(1981_0_length_Return) → 2506_0_length_Return(2)
4469_1_test_InvokeMethod(2038_0_test_Return, -1) → 4528_0_test_Return
4469_1_test_InvokeMethod(4528_0_test_Return, x1) → 4528_0_test_Return
4388_0_bubble_NULL(NULL) → 4393_0_bubble_Return
4388_0_bubble_NULL(java.lang.Object(List(x0))) → 4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4388_0_bubble_NULL(java.lang.Object(List(EOC))) → 4443_0_bubble_NONNULL(java.lang.Object(List(EOC)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4457_0_bubble_Return(java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(java.lang.Object(List(EOC))))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(EOC)))) → 4651_0_bubble_Return
4641_1_bubble_InvokeMethod(4651_0_bubble_Return) → 4673_0_bubble_Return
4641_1_bubble_InvokeMethod(4673_0_bubble_Return) → 4673_0_bubble_Return

Combined rules. Obtained 13 conditional rules for P and 37 conditional rules for R.


P rules:
2112_1_test_InvokeMethod(1878_0_length_Return, x2, NULL) → 4469_1_test_InvokeMethod(2112_1_test_InvokeMethod(2112_0_length_Load(x3), -(x2, 1), x3), -(x2, 1)) | &&(>(x2, 0), <(x2, 4))
2112_1_test_InvokeMethod(2496_0_length_Return(x0), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, x0)
2112_1_test_InvokeMethod(2501_0_length_Return(x0), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, x0)
2112_1_test_InvokeMethod(2506_0_length_Return(x0), x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, x0)
2112_1_test_InvokeMethod(1981_0_length_Return, x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, 1)
2112_1_test_InvokeMethod(1970_0_length_Return, x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, 1)
2112_1_test_InvokeMethod(1977_0_length_Return, x2, java.lang.Object(List(EOC))) → 4434_0_test_GE(x2, 0, 1)
4434_0_test_GE(x1, x3, x2) → 4469_1_test_InvokeMethod(2112_1_test_InvokeMethod(2112_0_length_Load(x4), -(x1, 1), x4), -(x1, 1)) | &&(&&(>=(x3, x2), >(x1, 0)), <(x1, 4))
4434_0_test_GE(x1, x3, x2) → 4467_1_test_InvokeMethod(4467_0_bubble_Load(x4), x1, x2, x3, x4) | &&(<(x3, x2), <(x1, 3))
4467_1_test_InvokeMethod(4393_0_bubble_Return, x1, x2, x3, NULL) → 4434_0_test_GE(x1, +(x3, 1), x2)
4467_1_test_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(x0))), x2, x3, x4, java.lang.Object(List(x0))) → 4434_0_test_GE(x2, +(x4, 1), x3)
4467_1_test_InvokeMethod(4651_0_bubble_Return, x1, x2, x3, x4) → 4434_0_test_GE(x1, +(x3, 1), x2)
4467_1_test_InvokeMethod(4673_0_bubble_Return, x1, x2, x3, x4) → 4434_0_test_GE(x1, +(x3, 1), x2)
R rules:
2112_0_length_Load(x0) → 1870_0_length_NONNULL
4467_0_bubble_Load(x0) → 4388_0_bubble_NULL(x0)
1870_0_length_NONNULL1878_0_length_Return
1870_0_length_NONNULL1924_1_length_InvokeMethod(1870_0_length_NONNULL)
1870_0_length_NONNULL1933_1_length_InvokeMethod(1870_0_length_NONNULL)
1870_0_length_NONNULL1936_1_length_InvokeMethod(1870_0_length_NONNULL)
1924_1_length_InvokeMethod(1878_0_length_Return) → 1970_0_length_Return
1933_1_length_InvokeMethod(1878_0_length_Return) → 1977_0_length_Return
1936_1_length_InvokeMethod(1878_0_length_Return) → 1981_0_length_Return
1924_1_length_InvokeMethod(2496_0_length_Return(x0)) → 2496_0_length_Return(+(1, x0)) | >(x0, 0)
1924_1_length_InvokeMethod(2501_0_length_Return(x0)) → 2496_0_length_Return(+(1, x0)) | >(x0, 0)
1924_1_length_InvokeMethod(2506_0_length_Return(x0)) → 2496_0_length_Return(+(1, x0)) | >(x0, 0)
1924_1_length_InvokeMethod(1970_0_length_Return) → 2496_0_length_Return(2)
1924_1_length_InvokeMethod(1977_0_length_Return) → 2496_0_length_Return(2)
1924_1_length_InvokeMethod(1981_0_length_Return) → 2496_0_length_Return(2)
1933_1_length_InvokeMethod(2496_0_length_Return(x0)) → 2501_0_length_Return(+(1, x0)) | >(x0, 0)
1933_1_length_InvokeMethod(2501_0_length_Return(x0)) → 2501_0_length_Return(+(1, x0)) | >(x0, 0)
1933_1_length_InvokeMethod(2506_0_length_Return(x0)) → 2501_0_length_Return(+(1, x0)) | >(x0, 0)
1933_1_length_InvokeMethod(1970_0_length_Return) → 2501_0_length_Return(2)
1933_1_length_InvokeMethod(1977_0_length_Return) → 2501_0_length_Return(2)
1933_1_length_InvokeMethod(1981_0_length_Return) → 2501_0_length_Return(2)
1936_1_length_InvokeMethod(2496_0_length_Return(x0)) → 2506_0_length_Return(+(1, x0)) | >(x0, 0)
1936_1_length_InvokeMethod(2501_0_length_Return(x0)) → 2506_0_length_Return(+(1, x0)) | >(x0, 0)
1936_1_length_InvokeMethod(2506_0_length_Return(x0)) → 2506_0_length_Return(+(1, x0)) | >(x0, 0)
1936_1_length_InvokeMethod(1970_0_length_Return) → 2506_0_length_Return(2)
1936_1_length_InvokeMethod(1977_0_length_Return) → 2506_0_length_Return(2)
1936_1_length_InvokeMethod(1981_0_length_Return) → 2506_0_length_Return(2)
4469_1_test_InvokeMethod(2038_0_test_Return, -1) → 4528_0_test_Return
4469_1_test_InvokeMethod(4528_0_test_Return, x1) → 4528_0_test_Return
4388_0_bubble_NULL(NULL) → 4393_0_bubble_Return
4388_0_bubble_NULL(java.lang.Object(List(x0))) → 4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4388_0_bubble_NULL(java.lang.Object(List(EOC))) → 4443_0_bubble_NONNULL(java.lang.Object(List(EOC)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4457_0_bubble_Return(java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(java.lang.Object(List(EOC))))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(EOC)))) → 4651_0_bubble_Return
4641_1_bubble_InvokeMethod(4651_0_bubble_Return) → 4673_0_bubble_Return
4641_1_bubble_InvokeMethod(4673_0_bubble_Return) → 4673_0_bubble_Return

Performed bisimulation on rules. Used the following equivalence classes: {[2496_0_length_Return_1, 2501_0_length_Return_1, 2506_0_length_Return_1]=2496_0_length_Return_1, [1924_1_length_InvokeMethod_1, 1933_1_length_InvokeMethod_1, 1936_1_length_InvokeMethod_1]=1924_1_length_InvokeMethod_1, [1878_0_length_Return, 1970_0_length_Return, 1977_0_length_Return, 1981_0_length_Return, 2038_0_test_Return, 4528_0_test_Return, 4393_0_bubble_Return, EOC, 4651_0_bubble_Return, 4673_0_bubble_Return]=1878_0_length_Return, [Cond_1924_1_length_InvokeMethod_2, Cond_1924_1_length_InvokeMethod1_2, Cond_1924_1_length_InvokeMethod2_2, Cond_1933_1_length_InvokeMethod_2, Cond_1933_1_length_InvokeMethod1_2, Cond_1933_1_length_InvokeMethod2_2, Cond_1936_1_length_InvokeMethod_2, Cond_1936_1_length_InvokeMethod1_2, Cond_1936_1_length_InvokeMethod2_2]=Cond_1924_1_length_InvokeMethod_2}


Finished conversion. Obtained 11 rules for P and 17 rules for R. System has predefined symbols.


P rules:
2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2, NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2, 0), <(x2, 4)), 1878_0_length_Return, x2, NULL, x3)
COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2, NULL, x3) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3), -(x2, 1), x3)
2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0), x2, java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2, 0, x0)
2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2, java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2, 0, 1)
4434_0_TEST_GE(x1, x3, x2) → COND_4434_0_TEST_GE(&&(&&(>=(x3, x2), >(x1, 0)), <(x1, 4)), x1, x3, x2, x4)
COND_4434_0_TEST_GE(TRUE, x1, x3, x2, x4) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4), -(x1, 1), x4)
4434_0_TEST_GE(x1, x3, x2) → COND_4434_0_TEST_GE1(&&(<(x3, x2), <(x1, 3)), x1, x3, x2, x4)
COND_4434_0_TEST_GE1(TRUE, x1, x3, x2, x4) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4), x1, x2, x3, x4)
4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1, x2, x3, NULL) → 4434_0_TEST_GE(x1, +(x3, 1), x2)
4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0))), x2, x3, x4, java.lang.Object(List(x0))) → 4434_0_TEST_GE(x2, +(x4, 1), x3)
4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1, x2, x3, x4) → 4434_0_TEST_GE(x1, +(x3, 1), x2)
R rules:
2112_0_length_Load(x0) → 1870_0_length_NONNULL
4467_0_bubble_Load(x0) → 4388_0_bubble_NULL(x0)
1870_0_length_NONNULL1878_0_length_Return
1870_0_length_NONNULL1924_1_length_InvokeMethod(1870_0_length_NONNULL)
1924_1_length_InvokeMethod(1878_0_length_Return) → 1878_0_length_Return
1924_1_length_InvokeMethod(2496_0_length_Return(x0)) → Cond_1924_1_length_InvokeMethod(>(x0, 0), 2496_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0)) → 2496_0_length_Return(+(1, x0))
1924_1_length_InvokeMethod(1878_0_length_Return) → 2496_0_length_Return(2)
4469_1_test_InvokeMethod(1878_0_length_Return, -1) → 1878_0_length_Return
4469_1_test_InvokeMethod(1878_0_length_Return, x1) → 1878_0_length_Return
4388_0_bubble_NULL(NULL) → 1878_0_length_Return
4388_0_bubble_NULL(java.lang.Object(List(x0))) → 4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))) → 4443_0_bubble_NONNULL(java.lang.Object(List(1878_0_length_Return)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4457_0_bubble_Return(java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(1878_0_length_Return)))) → 1878_0_length_Return
4641_1_bubble_InvokeMethod(1878_0_length_Return) → 1878_0_length_Return

(25) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
2112_0_length_Load(x0) → 1870_0_length_NONNULL
4467_0_bubble_Load(x0) → 4388_0_bubble_NULL(x0)
1870_0_length_NONNULL1878_0_length_Return
1870_0_length_NONNULL1924_1_length_InvokeMethod(1870_0_length_NONNULL)
1924_1_length_InvokeMethod(1878_0_length_Return) → 1878_0_length_Return
1924_1_length_InvokeMethod(2496_0_length_Return(x0)) → Cond_1924_1_length_InvokeMethod(x0 > 0, 2496_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0)) → 2496_0_length_Return(1 + x0)
1924_1_length_InvokeMethod(1878_0_length_Return) → 2496_0_length_Return(2)
4469_1_test_InvokeMethod(1878_0_length_Return, -1) → 1878_0_length_Return
4469_1_test_InvokeMethod(1878_0_length_Return, x1) → 1878_0_length_Return
4388_0_bubble_NULL(NULL) → 1878_0_length_Return
4388_0_bubble_NULL(java.lang.Object(List(x0))) → 4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))) → 4443_0_bubble_NONNULL(java.lang.Object(List(1878_0_length_Return)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4457_0_bubble_Return(java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(1878_0_length_Return)))) → 1878_0_length_Return
4641_1_bubble_InvokeMethod(1878_0_length_Return) → 1878_0_length_Return

The integer pair graph contains the following rules and edges:
(0): 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL) → COND_2112_1_TEST_INVOKEMETHOD(x2[0] > 0 && x2[0] < 4, 1878_0_length_Return, x2[0], NULL, x3[0])
(1): COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), x2[1] - 1, x3[1])
(2): 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[2], 0, x0[2])
(3): 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[3], 0, 1)
(4): 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(x3[4] >= x2[4] && x1[4] > 0 && x1[4] < 4, x1[4], x3[4], x2[4], x4[4])
(5): COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), x1[5] - 1, x4[5])
(6): 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(x3[6] < x2[6] && x1[6] < 3, x1[6], x3[6], x2[6], x4[6])
(7): COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])
(8): 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], x3[8] + 1, x2[8])
(9): 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], x4[9] + 1, x3[9])
(10): 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], x3[10] + 1, x2[10])

(0) -> (1), if (x2[0] > 0 && x2[0] < 4x2[0]* x2[1]x3[0]* x3[1])


(1) -> (0), if (2112_0_length_Load(x3[1]) →* 1878_0_length_Returnx2[1] - 1* x2[0]x3[1]* NULL)


(1) -> (2), if (2112_0_length_Load(x3[1]) →* 2496_0_length_Return(x0[2])∧x2[1] - 1* x2[2]x3[1]* java.lang.Object(List(1878_0_length_Return)))


(1) -> (3), if (2112_0_length_Load(x3[1]) →* 1878_0_length_Returnx2[1] - 1* x2[3]x3[1]* java.lang.Object(List(1878_0_length_Return)))


(2) -> (4), if (x2[2]* x1[4]0* x3[4]x0[2]* x2[4])


(2) -> (6), if (x2[2]* x1[6]0* x3[6]x0[2]* x2[6])


(3) -> (4), if (x2[3]* x1[4]0* x3[4]1* x2[4])


(3) -> (6), if (x2[3]* x1[6]0* x3[6]1* x2[6])


(4) -> (5), if (x3[4] >= x2[4] && x1[4] > 0 && x1[4] < 4x1[4]* x1[5]x3[4]* x3[5]x2[4]* x2[5]x4[4]* x4[5])


(5) -> (0), if (2112_0_length_Load(x4[5]) →* 1878_0_length_Returnx1[5] - 1* x2[0]x4[5]* NULL)


(5) -> (2), if (2112_0_length_Load(x4[5]) →* 2496_0_length_Return(x0[2])∧x1[5] - 1* x2[2]x4[5]* java.lang.Object(List(1878_0_length_Return)))


(5) -> (3), if (2112_0_length_Load(x4[5]) →* 1878_0_length_Returnx1[5] - 1* x2[3]x4[5]* java.lang.Object(List(1878_0_length_Return)))


(6) -> (7), if (x3[6] < x2[6] && x1[6] < 3x1[6]* x1[7]x3[6]* x3[7]x2[6]* x2[7]x4[6]* x4[7])


(7) -> (8), if (4467_0_bubble_Load(x4[7]) →* 1878_0_length_Returnx1[7]* x1[8]x2[7]* x2[8]x3[7]* x3[8]x4[7]* NULL)


(7) -> (9), if (4467_0_bubble_Load(x4[7]) →* 4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧x1[7]* x2[9]x2[7]* x3[9]x3[7]* x4[9]x4[7]* java.lang.Object(List(x0[9])))


(7) -> (10), if (4467_0_bubble_Load(x4[7]) →* 1878_0_length_Returnx1[7]* x1[10]x2[7]* x2[10]x3[7]* x3[10]x4[7]* x4[10])


(8) -> (4), if (x1[8]* x1[4]x3[8] + 1* x3[4]x2[8]* x2[4])


(8) -> (6), if (x1[8]* x1[6]x3[8] + 1* x3[6]x2[8]* x2[6])


(9) -> (4), if (x2[9]* x1[4]x4[9] + 1* x3[4]x3[9]* x2[4])


(9) -> (6), if (x2[9]* x1[6]x4[9] + 1* x3[6]x3[9]* x2[6])


(10) -> (4), if (x1[10]* x1[4]x3[10] + 1* x3[4]x2[10]* x2[4])


(10) -> (6), if (x1[10]* x1[6]x3[10] + 1* x3[6]x2[10]* x2[6])



The set Q consists of the following terms:
2112_0_length_Load(x0)
4467_0_bubble_Load(x0)
1870_0_length_NONNULL
1924_1_length_InvokeMethod(1878_0_length_Return)
1924_1_length_InvokeMethod(2496_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0))
4469_1_test_InvokeMethod(1878_0_length_Return, x0)
4388_0_bubble_NULL(NULL)
4388_0_bubble_NULL(java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(1878_0_length_Return))))
4641_1_bubble_InvokeMethod(1878_0_length_Return)

(26) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@ef8e911 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 2 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2, NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2, 0), <(x2, 4)), 1878_0_length_Return, x2, NULL, x3) the following chains were created:
  • We consider the chain 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0]), COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1]), 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0]) which results in the following constraint:

    (1)    (&&(>(x2[0], 0), <(x2[0], 4))=TRUEx2[0]=x2[1]x3[0]=x3[1]2112_0_length_Load(x3[1])=1878_0_length_Return-(x2[1], 1)=x2[0]1x3[1]=NULL2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0]1, NULL)≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0]1, NULL)≥COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0]1, 0), <(x2[0]1, 4)), 1878_0_length_Return, x2[0]1, NULL, x3[0]1)∧(UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0]1, 0), <(x2[0]1, 4)), 1878_0_length_Return, x2[0]1, NULL, x3[0]1)), ≥))



    We simplified constraint (1) using rules (III), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (NULL=x02112_0_length_Load(x0)=1878_0_length_Return>(x2[0], 0)=TRUE<(x2[0], 4)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), NULL)≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), NULL)≥COND_2112_1_TEST_INVOKEMETHOD(&&(>(-(x2[0], 1), 0), <(-(x2[0], 1), 4)), 1878_0_length_Return, -(x2[0], 1), NULL, x3[0]1)∧(UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0]1, 0), <(x2[0]1, 4)), 1878_0_length_Return, x2[0]1, NULL, x3[0]1)), ≥))



    We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x0)=1878_0_length_Return which results in the following new constraint:

    (3)    (1870_0_length_NONNULL=1878_0_length_ReturnNULL=x1>(x2[0], 0)=TRUE<(x2[0], 4)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), NULL)≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), NULL)≥COND_2112_1_TEST_INVOKEMETHOD(&&(>(-(x2[0], 1), 0), <(-(x2[0], 1), 4)), 1878_0_length_Return, -(x2[0], 1), NULL, x3[0]1)∧(UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0]1, 0), <(x2[0]1, 4)), 1878_0_length_Return, x2[0]1, NULL, x3[0]1)), ≥))



    We simplified constraint (3) using rule (IV) which results in the following new constraint:

    (4)    (1870_0_length_NONNULL=1878_0_length_Return>(x2[0], 0)=TRUE<(x2[0], 4)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), NULL)≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), NULL)≥COND_2112_1_TEST_INVOKEMETHOD(&&(>(-(x2[0], 1), 0), <(-(x2[0], 1), 4)), 1878_0_length_Return, -(x2[0], 1), NULL, x3[0]1)∧(UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0]1, 0), <(x2[0]1, 4)), 1878_0_length_Return, x2[0]1, NULL, x3[0]1)), ≥))



    We simplified constraint (4) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (5)    (x2[0] + [-1] ≥ 0∧[3] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0]1, 0), <(x2[0]1, 4)), 1878_0_length_Return, x2[0]1, NULL, x3[0]1)), ≥)∧[(-2)bni_37 + (-1)Bound*bni_37] + [bni_37]x2[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (5) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (6)    (x2[0] + [-1] ≥ 0∧[3] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0]1, 0), <(x2[0]1, 4)), 1878_0_length_Return, x2[0]1, NULL, x3[0]1)), ≥)∧[(-2)bni_37 + (-1)Bound*bni_37] + [bni_37]x2[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (6) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (7)    (x2[0] + [-1] ≥ 0∧[3] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0]1, 0), <(x2[0]1, 4)), 1878_0_length_Return, x2[0]1, NULL, x3[0]1)), ≥)∧[(-2)bni_37 + (-1)Bound*bni_37] + [bni_37]x2[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (8)    (x2[0] ≥ 0∧[2] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0]1, 0), <(x2[0]1, 4)), 1878_0_length_Return, x2[0]1, NULL, x3[0]1)), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x2[0] ≥ 0∧[(-1)bso_38] ≥ 0)



  • We consider the chain 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4]), COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5]), 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0]) which results in the following constraint:

    (9)    (&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4))=TRUEx1[4]=x1[5]x3[4]=x3[5]x2[4]=x2[5]x4[4]=x4[5]2112_0_length_Load(x4[5])=1878_0_length_Return-(x1[5], 1)=x2[0]x4[5]=NULL2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL)≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL)≥COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])∧(UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])), ≥))



    We simplified constraint (9) using rules (III), (IV), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (10)    (NULL=x22112_0_length_Load(x2)=1878_0_length_Return<(x1[4], 4)=TRUE>=(x3[4], x2[4])=TRUE>(x1[4], 0)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), NULL)≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), NULL)≥COND_2112_1_TEST_INVOKEMETHOD(&&(>(-(x1[4], 1), 0), <(-(x1[4], 1), 4)), 1878_0_length_Return, -(x1[4], 1), NULL, x3[0])∧(UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])), ≥))



    We simplified constraint (10) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x2)=1878_0_length_Return which results in the following new constraint:

    (11)    (1870_0_length_NONNULL=1878_0_length_ReturnNULL=x3<(x1[4], 4)=TRUE>=(x3[4], x2[4])=TRUE>(x1[4], 0)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), NULL)≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), NULL)≥COND_2112_1_TEST_INVOKEMETHOD(&&(>(-(x1[4], 1), 0), <(-(x1[4], 1), 4)), 1878_0_length_Return, -(x1[4], 1), NULL, x3[0])∧(UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])), ≥))



    We simplified constraint (11) using rule (IV) which results in the following new constraint:

    (12)    (1870_0_length_NONNULL=1878_0_length_Return<(x1[4], 4)=TRUE>=(x3[4], x2[4])=TRUE>(x1[4], 0)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), NULL)≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), NULL)≥COND_2112_1_TEST_INVOKEMETHOD(&&(>(-(x1[4], 1), 0), <(-(x1[4], 1), 4)), 1878_0_length_Return, -(x1[4], 1), NULL, x3[0])∧(UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])), ≥))



    We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (13)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])), ≥)∧[(-2)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[4] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (14)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])), ≥)∧[(-2)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[4] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (14) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (15)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])), ≥)∧[(-2)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[4] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (15) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (16)    ([2] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[4] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (16) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (17)    ([2] + [-1]x1[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[4] ≥ 0∧[(-1)bso_38] ≥ 0)







For Pair COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2, NULL, x3) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3), -(x2, 1), x3) the following chains were created:
  • We consider the chain COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1]), 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0]), COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1]) which results in the following constraint:

    (18)    (2112_0_length_Load(x3[1])=1878_0_length_Return-(x2[1], 1)=x2[0]x3[1]=NULL&&(>(x2[0], 0), <(x2[0], 4))=TRUEx2[0]=x2[1]1x3[0]=x3[1]1COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1]1, NULL, x3[1]1)≥NonInfC∧COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1]1, NULL, x3[1]1)≥2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]1), -(x2[1]1, 1), x3[1]1)∧(UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]1), -(x2[1]1, 1), x3[1]1)), ≥))



    We simplified constraint (18) using rules (III), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (19)    (NULL=x42112_0_length_Load(x4)=1878_0_length_Return>(-(x2[1], 1), 0)=TRUE<(-(x2[1], 1), 4)=TRUECOND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x2[1], 1), NULL, x3[0])≥NonInfC∧COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x2[1], 1), NULL, x3[0])≥2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[0]), -(-(x2[1], 1), 1), x3[0])∧(UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]1), -(x2[1]1, 1), x3[1]1)), ≥))



    We simplified constraint (19) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x4)=1878_0_length_Return which results in the following new constraint:

    (20)    (1870_0_length_NONNULL=1878_0_length_ReturnNULL=x5>(-(x2[1], 1), 0)=TRUE<(-(x2[1], 1), 4)=TRUECOND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x2[1], 1), NULL, x3[0])≥NonInfC∧COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x2[1], 1), NULL, x3[0])≥2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[0]), -(-(x2[1], 1), 1), x3[0])∧(UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]1), -(x2[1]1, 1), x3[1]1)), ≥))



    We simplified constraint (20) using rule (IV) which results in the following new constraint:

    (21)    (1870_0_length_NONNULL=1878_0_length_Return>(-(x2[1], 1), 0)=TRUE<(-(x2[1], 1), 4)=TRUECOND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x2[1], 1), NULL, x3[0])≥NonInfC∧COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x2[1], 1), NULL, x3[0])≥2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[0]), -(-(x2[1], 1), 1), x3[0])∧(UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]1), -(x2[1]1, 1), x3[1]1)), ≥))



    We simplified constraint (21) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (22)    (x2[1] + [-2] ≥ 0∧[4] + [-1]x2[1] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]1), -(x2[1]1, 1), x3[1]1)), ≥)∧[(-2)bni_39 + (-1)Bound*bni_39] + [bni_39]x2[1] ≥ 0∧[1 + (-1)bso_40] ≥ 0)



    We simplified constraint (22) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (23)    (x2[1] + [-2] ≥ 0∧[4] + [-1]x2[1] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]1), -(x2[1]1, 1), x3[1]1)), ≥)∧[(-2)bni_39 + (-1)Bound*bni_39] + [bni_39]x2[1] ≥ 0∧[1 + (-1)bso_40] ≥ 0)



    We simplified constraint (23) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (24)    (x2[1] + [-2] ≥ 0∧[4] + [-1]x2[1] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]1), -(x2[1]1, 1), x3[1]1)), ≥)∧[(-2)bni_39 + (-1)Bound*bni_39] + [bni_39]x2[1] ≥ 0∧[1 + (-1)bso_40] ≥ 0)



    We simplified constraint (24) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (25)    (x2[1] ≥ 0∧[2] + [-1]x2[1] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]1), -(x2[1]1, 1), x3[1]1)), ≥)∧[(-1)Bound*bni_39] + [bni_39]x2[1] ≥ 0∧[1 + (-1)bso_40] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5]), 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0]), COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1]) which results in the following constraint:

    (26)    (2112_0_length_Load(x4[5])=1878_0_length_Return-(x1[5], 1)=x2[0]x4[5]=NULL&&(>(x2[0], 0), <(x2[0], 4))=TRUEx2[0]=x2[1]x3[0]=x3[1]COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1])≥NonInfC∧COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1])≥2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])∧(UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])), ≥))



    We simplified constraint (26) using rules (III), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (27)    (NULL=x62112_0_length_Load(x6)=1878_0_length_Return>(-(x1[5], 1), 0)=TRUE<(-(x1[5], 1), 4)=TRUECOND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x1[5], 1), NULL, x3[0])≥NonInfC∧COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x1[5], 1), NULL, x3[0])≥2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[0]), -(-(x1[5], 1), 1), x3[0])∧(UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])), ≥))



    We simplified constraint (27) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x6)=1878_0_length_Return which results in the following new constraint:

    (28)    (1870_0_length_NONNULL=1878_0_length_ReturnNULL=x7>(-(x1[5], 1), 0)=TRUE<(-(x1[5], 1), 4)=TRUECOND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x1[5], 1), NULL, x3[0])≥NonInfC∧COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x1[5], 1), NULL, x3[0])≥2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[0]), -(-(x1[5], 1), 1), x3[0])∧(UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])), ≥))



    We simplified constraint (28) using rule (IV) which results in the following new constraint:

    (29)    (1870_0_length_NONNULL=1878_0_length_Return>(-(x1[5], 1), 0)=TRUE<(-(x1[5], 1), 4)=TRUECOND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x1[5], 1), NULL, x3[0])≥NonInfC∧COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, -(x1[5], 1), NULL, x3[0])≥2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[0]), -(-(x1[5], 1), 1), x3[0])∧(UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])), ≥))



    We simplified constraint (29) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (30)    (x1[5] + [-2] ≥ 0∧[4] + [-1]x1[5] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])), ≥)∧[(-2)bni_39 + (-1)Bound*bni_39] + [bni_39]x1[5] ≥ 0∧[1 + (-1)bso_40] ≥ 0)



    We simplified constraint (30) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (31)    (x1[5] + [-2] ≥ 0∧[4] + [-1]x1[5] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])), ≥)∧[(-2)bni_39 + (-1)Bound*bni_39] + [bni_39]x1[5] ≥ 0∧[1 + (-1)bso_40] ≥ 0)



    We simplified constraint (31) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (32)    (x1[5] + [-2] ≥ 0∧[4] + [-1]x1[5] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])), ≥)∧[(-2)bni_39 + (-1)Bound*bni_39] + [bni_39]x1[5] ≥ 0∧[1 + (-1)bso_40] ≥ 0)



    We simplified constraint (32) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (33)    (x1[5] ≥ 0∧[2] + [-1]x1[5] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])), ≥)∧[(-1)Bound*bni_39] + [bni_39]x1[5] ≥ 0∧[1 + (-1)bso_40] ≥ 0)







For Pair 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0), x2, java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2, 0, x0) the following chains were created:
  • We consider the chain 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0]), COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1]), 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[2], 0, x0[2]) which results in the following constraint:

    (34)    (&&(>(x2[0], 0), <(x2[0], 4))=TRUEx2[0]=x2[1]x3[0]=x3[1]2112_0_length_Load(x3[1])=2496_0_length_Return(x0[2])∧-(x2[1], 1)=x2[2]x3[1]=java.lang.Object(List(1878_0_length_Return)) ⇒ 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(x2[2], 0, x0[2])∧(UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥))



    We simplified constraint (34) using rules (III), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (35)    (java.lang.Object(List(1878_0_length_Return))=x82112_0_length_Load(x8)=2496_0_length_Return(x0[2])∧>(x2[0], 0)=TRUE<(x2[0], 4)=TRUE2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x2[0], 1), 0, x0[2])∧(UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥))



    We simplified constraint (35) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x8)=2496_0_length_Return(x0[2]) which results in the following new constraint:

    (36)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2])∧java.lang.Object(List(1878_0_length_Return))=x9>(x2[0], 0)=TRUE<(x2[0], 4)=TRUE2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x2[0], 1), 0, x0[2])∧(UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥))



    We simplified constraint (36) using rule (IV) which results in the following new constraint:

    (37)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2])∧>(x2[0], 0)=TRUE<(x2[0], 4)=TRUE2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x2[0], 1), 0, x0[2])∧(UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥))



    We simplified constraint (37) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (38)    (x2[0] + [-1] ≥ 0∧[3] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-2)bni_41 + (-1)Bound*bni_41] + [bni_41]x2[0] ≥ 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (38) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (39)    (x2[0] + [-1] ≥ 0∧[3] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-2)bni_41 + (-1)Bound*bni_41] + [bni_41]x2[0] ≥ 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (39) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (40)    (x2[0] + [-1] ≥ 0∧[3] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-2)bni_41 + (-1)Bound*bni_41] + [bni_41]x2[0] ≥ 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (40) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (41)    (x2[0] + [-1] ≥ 0∧[3] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-2)bni_41 + (-1)Bound*bni_41] + [bni_41]x2[0] ≥ 0∧0 = 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (42)    (x2[0] ≥ 0∧[2] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x2[0] ≥ 0∧0 = 0∧[(-1)bso_42] ≥ 0)



  • We consider the chain 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4]), COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5]), 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[2], 0, x0[2]) which results in the following constraint:

    (43)    (&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4))=TRUEx1[4]=x1[5]x3[4]=x3[5]x2[4]=x2[5]x4[4]=x4[5]2112_0_length_Load(x4[5])=2496_0_length_Return(x0[2])∧-(x1[5], 1)=x2[2]x4[5]=java.lang.Object(List(1878_0_length_Return)) ⇒ 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(x2[2], 0, x0[2])∧(UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥))



    We simplified constraint (43) using rules (III), (IV), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (44)    (java.lang.Object(List(1878_0_length_Return))=x102112_0_length_Load(x10)=2496_0_length_Return(x0[2])∧<(x1[4], 4)=TRUE>=(x3[4], x2[4])=TRUE>(x1[4], 0)=TRUE2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x1[4], 1), 0, x0[2])∧(UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥))



    We simplified constraint (44) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x10)=2496_0_length_Return(x0[2]) which results in the following new constraint:

    (45)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2])∧java.lang.Object(List(1878_0_length_Return))=x11<(x1[4], 4)=TRUE>=(x3[4], x2[4])=TRUE>(x1[4], 0)=TRUE2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x1[4], 1), 0, x0[2])∧(UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥))



    We simplified constraint (45) using rule (IV) which results in the following new constraint:

    (46)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2])∧<(x1[4], 4)=TRUE>=(x3[4], x2[4])=TRUE>(x1[4], 0)=TRUE2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x1[4], 1), 0, x0[2])∧(UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥))



    We simplified constraint (46) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (47)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-2)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (47) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (48)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-2)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (48) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (49)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-2)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (49) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (50)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-2)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧0 = 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (50) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (51)    ([2] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧0 = 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (51) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (52)    ([2] + [-1]x1[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧0 = 0∧[(-1)bso_42] ≥ 0)







For Pair 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2, java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2, 0, 1) the following chains were created:
  • We consider the chain 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0]), COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1]), 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[3], 0, 1) which results in the following constraint:

    (53)    (&&(>(x2[0], 0), <(x2[0], 4))=TRUEx2[0]=x2[1]x3[0]=x3[1]2112_0_length_Load(x3[1])=1878_0_length_Return-(x2[1], 1)=x2[3]x3[1]=java.lang.Object(List(1878_0_length_Return)) ⇒ 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(x2[3], 0, 1)∧(UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥))



    We simplified constraint (53) using rules (III), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (54)    (java.lang.Object(List(1878_0_length_Return))=x122112_0_length_Load(x12)=1878_0_length_Return>(x2[0], 0)=TRUE<(x2[0], 4)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x2[0], 1), 0, 1)∧(UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥))



    We simplified constraint (54) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x12)=1878_0_length_Return which results in the following new constraint:

    (55)    (1870_0_length_NONNULL=1878_0_length_Returnjava.lang.Object(List(1878_0_length_Return))=x13>(x2[0], 0)=TRUE<(x2[0], 4)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x2[0], 1), 0, 1)∧(UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥))



    We simplified constraint (55) using rule (IV) which results in the following new constraint:

    (56)    (1870_0_length_NONNULL=1878_0_length_Return>(x2[0], 0)=TRUE<(x2[0], 4)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x2[0], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x2[0], 1), 0, 1)∧(UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥))



    We simplified constraint (56) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (57)    (x2[0] + [-1] ≥ 0∧[3] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x2[0] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (57) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (58)    (x2[0] + [-1] ≥ 0∧[3] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x2[0] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (58) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (59)    (x2[0] + [-1] ≥ 0∧[3] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x2[0] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (59) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (60)    (x2[0] ≥ 0∧[2] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥)∧[(-1)bni_43 + (-1)Bound*bni_43] + [bni_43]x2[0] ≥ 0∧[(-1)bso_44] ≥ 0)



  • We consider the chain 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4]), COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5]), 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[3], 0, 1) which results in the following constraint:

    (61)    (&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4))=TRUEx1[4]=x1[5]x3[4]=x3[5]x2[4]=x2[5]x4[4]=x4[5]2112_0_length_Load(x4[5])=1878_0_length_Return-(x1[5], 1)=x2[3]x4[5]=java.lang.Object(List(1878_0_length_Return)) ⇒ 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(x2[3], 0, 1)∧(UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥))



    We simplified constraint (61) using rules (III), (IV), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (62)    (java.lang.Object(List(1878_0_length_Return))=x142112_0_length_Load(x14)=1878_0_length_Return<(x1[4], 4)=TRUE>=(x3[4], x2[4])=TRUE>(x1[4], 0)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x1[4], 1), 0, 1)∧(UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥))



    We simplified constraint (62) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x14)=1878_0_length_Return which results in the following new constraint:

    (63)    (1870_0_length_NONNULL=1878_0_length_Returnjava.lang.Object(List(1878_0_length_Return))=x15<(x1[4], 4)=TRUE>=(x3[4], x2[4])=TRUE>(x1[4], 0)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x1[4], 1), 0, 1)∧(UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥))



    We simplified constraint (63) using rule (IV) which results in the following new constraint:

    (64)    (1870_0_length_NONNULL=1878_0_length_Return<(x1[4], 4)=TRUE>=(x3[4], x2[4])=TRUE>(x1[4], 0)=TRUE2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥NonInfC∧2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, -(x1[4], 1), java.lang.Object(List(1878_0_length_Return)))≥4434_0_TEST_GE(-(x1[4], 1), 0, 1)∧(UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥))



    We simplified constraint (64) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (65)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[4] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (65) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (66)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[4] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (66) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (67)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[4] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (67) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (68)    ([2] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥)∧[(-1)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[4] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (68) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (69)    ([2] + [-1]x1[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥)∧[(-1)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[4] ≥ 0∧[(-1)bso_44] ≥ 0)







For Pair 4434_0_TEST_GE(x1, x3, x2) → COND_4434_0_TEST_GE(&&(&&(>=(x3, x2), >(x1, 0)), <(x1, 4)), x1, x3, x2, x4) the following chains were created:
  • We consider the chain COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1]), 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[2], 0, x0[2]), 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4]) which results in the following constraint:

    (70)    (2112_0_length_Load(x3[1])=2496_0_length_Return(x0[2])∧-(x2[1], 1)=x2[2]x3[1]=java.lang.Object(List(1878_0_length_Return))∧x2[2]=x1[4]0=x3[4]x0[2]=x2[4]4434_0_TEST_GE(x1[4], x3[4], x2[4])≥NonInfC∧4434_0_TEST_GE(x1[4], x3[4], x2[4])≥COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (70) using rules (III), (VII) which results in the following new constraint:

    (71)    (java.lang.Object(List(1878_0_length_Return))=x162112_0_length_Load(x16)=2496_0_length_Return(x0[2]) ⇒ 4434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥COND_4434_0_TEST_GE(&&(&&(>=(0, x0[2]), >(-(x2[1], 1), 0)), <(-(x2[1], 1), 4)), -(x2[1], 1), 0, x0[2], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (71) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x16)=2496_0_length_Return(x0[2]) which results in the following new constraint:

    (72)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2])∧java.lang.Object(List(1878_0_length_Return))=x174434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥COND_4434_0_TEST_GE(&&(&&(>=(0, x0[2]), >(-(x2[1], 1), 0)), <(-(x2[1], 1), 4)), -(x2[1], 1), 0, x0[2], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (72) using rule (IV) which results in the following new constraint:

    (73)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2]) ⇒ 4434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥COND_4434_0_TEST_GE(&&(&&(>=(0, x0[2]), >(-(x2[1], 1), 0)), <(-(x2[1], 1), 4)), -(x2[1], 1), 0, x0[2], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (73) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (74)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x2[1] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (74) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (75)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x2[1] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (75) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (76)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x2[1] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (76) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (77)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧0 = 0∧[bni_45] = 0∧[(-2)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)



  • We consider the chain COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1]), 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[3], 0, 1), 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4]) which results in the following constraint:

    (78)    (2112_0_length_Load(x3[1])=1878_0_length_Return-(x2[1], 1)=x2[3]x3[1]=java.lang.Object(List(1878_0_length_Return))∧x2[3]=x1[4]0=x3[4]1=x2[4]4434_0_TEST_GE(x1[4], x3[4], x2[4])≥NonInfC∧4434_0_TEST_GE(x1[4], x3[4], x2[4])≥COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (78) using rules (III), (VII) which results in the following new constraint:

    (79)    (java.lang.Object(List(1878_0_length_Return))=x182112_0_length_Load(x18)=1878_0_length_Return4434_0_TEST_GE(-(x2[1], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, 1)≥COND_4434_0_TEST_GE(&&(&&(>=(0, 1), >(-(x2[1], 1), 0)), <(-(x2[1], 1), 4)), -(x2[1], 1), 0, 1, x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (79) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x18)=1878_0_length_Return which results in the following new constraint:

    (80)    (1870_0_length_NONNULL=1878_0_length_Returnjava.lang.Object(List(1878_0_length_Return))=x194434_0_TEST_GE(-(x2[1], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, 1)≥COND_4434_0_TEST_GE(&&(&&(>=(0, 1), >(-(x2[1], 1), 0)), <(-(x2[1], 1), 4)), -(x2[1], 1), 0, 1, x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (80) using rule (IV) which results in the following new constraint:

    (81)    (1870_0_length_NONNULL=1878_0_length_Return4434_0_TEST_GE(-(x2[1], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, 1)≥COND_4434_0_TEST_GE(&&(&&(>=(0, 1), >(-(x2[1], 1), 0)), <(-(x2[1], 1), 4)), -(x2[1], 1), 0, 1, x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (81) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (82)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x2[1] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (82) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (83)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x2[1] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (83) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (84)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x2[1] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (84) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (85)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[bni_45] = 0∧[(-2)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧[(-1)bso_46] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8]), 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4]) which results in the following constraint:

    (86)    (4467_0_bubble_Load(x4[7])=1878_0_length_Returnx1[7]=x1[8]x2[7]=x2[8]x3[7]=x3[8]x4[7]=NULLx1[8]=x1[4]+(x3[8], 1)=x3[4]x2[8]=x2[4]4434_0_TEST_GE(x1[4], x3[4], x2[4])≥NonInfC∧4434_0_TEST_GE(x1[4], x3[4], x2[4])≥COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (86) using rules (III), (VII) which results in the following new constraint:

    (87)    (NULL=x204467_0_bubble_Load(x20)=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥COND_4434_0_TEST_GE(&&(&&(>=(+(x3[8], 1), x2[7]), >(x1[7], 0)), <(x1[7], 4)), x1[7], +(x3[8], 1), x2[7], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (87) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x20)=1878_0_length_Return which results in the following new constraint:

    (88)    (4388_0_bubble_NULL(x21)=1878_0_length_ReturnNULL=x214434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥COND_4434_0_TEST_GE(&&(&&(>=(+(x3[8], 1), x2[7]), >(x1[7], 0)), <(x1[7], 4)), x1[7], +(x3[8], 1), x2[7], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (88) using rule (III) which results in the following new constraint:

    (89)    (4388_0_bubble_NULL(NULL)=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥COND_4434_0_TEST_GE(&&(&&(>=(+(x3[8], 1), x2[7]), >(x1[7], 0)), <(x1[7], 4)), x1[7], +(x3[8], 1), x2[7], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (89) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (90)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[7] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (90) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (91)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[7] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (91) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (92)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[7] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (92) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (93)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧0 = 0∧0 = 0∧[bni_45] = 0∧[(-1)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9]), 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4]) which results in the following constraint:

    (94)    (4467_0_bubble_Load(x4[7])=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧x1[7]=x2[9]x2[7]=x3[9]x3[7]=x4[9]x4[7]=java.lang.Object(List(x0[9]))∧x2[9]=x1[4]+(x4[9], 1)=x3[4]x3[9]=x2[4]4434_0_TEST_GE(x1[4], x3[4], x2[4])≥NonInfC∧4434_0_TEST_GE(x1[4], x3[4], x2[4])≥COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (94) using rules (III), (VII) which results in the following new constraint:

    (95)    (java.lang.Object(List(x0[9]))=x224467_0_bubble_Load(x22)=4457_0_bubble_Return(java.lang.Object(List(x0[9]))) ⇒ 4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥COND_4434_0_TEST_GE(&&(&&(>=(+(x4[9], 1), x2[7]), >(x1[7], 0)), <(x1[7], 4)), x1[7], +(x4[9], 1), x2[7], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (95) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x22)=4457_0_bubble_Return(java.lang.Object(List(x0[9]))) which results in the following new constraint:

    (96)    (4388_0_bubble_NULL(x23)=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧java.lang.Object(List(x0[9]))=x234434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥COND_4434_0_TEST_GE(&&(&&(>=(+(x4[9], 1), x2[7]), >(x1[7], 0)), <(x1[7], 4)), x1[7], +(x4[9], 1), x2[7], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (96) using rule (III) which results in the following new constraint:

    (97)    (4388_0_bubble_NULL(java.lang.Object(List(x0[9])))=4457_0_bubble_Return(java.lang.Object(List(x0[9]))) ⇒ 4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥COND_4434_0_TEST_GE(&&(&&(>=(+(x4[9], 1), x2[7]), >(x1[7], 0)), <(x1[7], 4)), x1[7], +(x4[9], 1), x2[7], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (97) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (98)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[7] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (98) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (99)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[7] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (99) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (100)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[7] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (100) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (101)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧0 = 0∧0 = 0∧[bni_45] = 0∧[(-1)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10]), 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4]) which results in the following constraint:

    (102)    (4467_0_bubble_Load(x4[7])=1878_0_length_Returnx1[7]=x1[10]x2[7]=x2[10]x3[7]=x3[10]x4[7]=x4[10]x1[10]=x1[4]+(x3[10], 1)=x3[4]x2[10]=x2[4]4434_0_TEST_GE(x1[4], x3[4], x2[4])≥NonInfC∧4434_0_TEST_GE(x1[4], x3[4], x2[4])≥COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (102) using rules (III), (IV) which results in the following new constraint:

    (103)    (4467_0_bubble_Load(x4[7])=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥COND_4434_0_TEST_GE(&&(&&(>=(+(x3[10], 1), x2[7]), >(x1[7], 0)), <(x1[7], 4)), x1[7], +(x3[10], 1), x2[7], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (103) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x4[7])=1878_0_length_Return which results in the following new constraint:

    (104)    (4388_0_bubble_NULL(x24)=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥COND_4434_0_TEST_GE(&&(&&(>=(+(x3[10], 1), x2[7]), >(x1[7], 0)), <(x1[7], 4)), x1[7], +(x3[10], 1), x2[7], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (104) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (105)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[7] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (105) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (106)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[7] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (106) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (107)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[7] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (107) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (108)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧0 = 0∧0 = 0∧[bni_45] = 0∧[(-1)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5]), 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[2], 0, x0[2]), 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4]) which results in the following constraint:

    (109)    (2112_0_length_Load(x4[5])=2496_0_length_Return(x0[2])∧-(x1[5], 1)=x2[2]x4[5]=java.lang.Object(List(1878_0_length_Return))∧x2[2]=x1[4]0=x3[4]x0[2]=x2[4]4434_0_TEST_GE(x1[4], x3[4], x2[4])≥NonInfC∧4434_0_TEST_GE(x1[4], x3[4], x2[4])≥COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (109) using rules (III), (VII) which results in the following new constraint:

    (110)    (java.lang.Object(List(1878_0_length_Return))=x252112_0_length_Load(x25)=2496_0_length_Return(x0[2]) ⇒ 4434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥COND_4434_0_TEST_GE(&&(&&(>=(0, x0[2]), >(-(x1[5], 1), 0)), <(-(x1[5], 1), 4)), -(x1[5], 1), 0, x0[2], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (110) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x25)=2496_0_length_Return(x0[2]) which results in the following new constraint:

    (111)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2])∧java.lang.Object(List(1878_0_length_Return))=x264434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥COND_4434_0_TEST_GE(&&(&&(>=(0, x0[2]), >(-(x1[5], 1), 0)), <(-(x1[5], 1), 4)), -(x1[5], 1), 0, x0[2], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (111) using rule (IV) which results in the following new constraint:

    (112)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2]) ⇒ 4434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥COND_4434_0_TEST_GE(&&(&&(>=(0, x0[2]), >(-(x1[5], 1), 0)), <(-(x1[5], 1), 4)), -(x1[5], 1), 0, x0[2], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (112) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (113)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[5] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (113) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (114)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[5] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (114) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (115)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[5] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (115) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (116)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧0 = 0∧[bni_45] = 0∧[(-2)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5]), 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[3], 0, 1), 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4]) which results in the following constraint:

    (117)    (2112_0_length_Load(x4[5])=1878_0_length_Return-(x1[5], 1)=x2[3]x4[5]=java.lang.Object(List(1878_0_length_Return))∧x2[3]=x1[4]0=x3[4]1=x2[4]4434_0_TEST_GE(x1[4], x3[4], x2[4])≥NonInfC∧4434_0_TEST_GE(x1[4], x3[4], x2[4])≥COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (117) using rules (III), (VII) which results in the following new constraint:

    (118)    (java.lang.Object(List(1878_0_length_Return))=x272112_0_length_Load(x27)=1878_0_length_Return4434_0_TEST_GE(-(x1[5], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, 1)≥COND_4434_0_TEST_GE(&&(&&(>=(0, 1), >(-(x1[5], 1), 0)), <(-(x1[5], 1), 4)), -(x1[5], 1), 0, 1, x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (118) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x27)=1878_0_length_Return which results in the following new constraint:

    (119)    (1870_0_length_NONNULL=1878_0_length_Returnjava.lang.Object(List(1878_0_length_Return))=x284434_0_TEST_GE(-(x1[5], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, 1)≥COND_4434_0_TEST_GE(&&(&&(>=(0, 1), >(-(x1[5], 1), 0)), <(-(x1[5], 1), 4)), -(x1[5], 1), 0, 1, x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (119) using rule (IV) which results in the following new constraint:

    (120)    (1870_0_length_NONNULL=1878_0_length_Return4434_0_TEST_GE(-(x1[5], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, 1)≥COND_4434_0_TEST_GE(&&(&&(>=(0, 1), >(-(x1[5], 1), 0)), <(-(x1[5], 1), 4)), -(x1[5], 1), 0, 1, x4[4])∧(UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥))



    We simplified constraint (120) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (121)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[5] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (121) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (122)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[5] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (122) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (123)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[5] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (123) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (124)    ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[bni_45] = 0∧[(-2)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧[(-1)bso_46] ≥ 0)







For Pair COND_4434_0_TEST_GE(TRUE, x1, x3, x2, x4) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4), -(x1, 1), x4) the following chains were created:
  • We consider the chain 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4]), COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5]) which results in the following constraint:

    (125)    (&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4))=TRUEx1[4]=x1[5]x3[4]=x3[5]x2[4]=x2[5]x4[4]=x4[5]COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5])≥NonInfC∧COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5])≥2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])∧(UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])), ≥))



    We simplified constraint (125) using rules (III), (IDP_BOOLEAN) which results in the following new constraint:

    (126)    (<(x1[4], 4)=TRUE>=(x3[4], x2[4])=TRUE>(x1[4], 0)=TRUECOND_4434_0_TEST_GE(TRUE, x1[4], x3[4], x2[4], x4[4])≥NonInfC∧COND_4434_0_TEST_GE(TRUE, x1[4], x3[4], x2[4], x4[4])≥2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[4]), -(x1[4], 1), x4[4])∧(UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])), ≥))



    We simplified constraint (126) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (127)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])), ≥)∧[(-1)bni_47 + (-1)Bound*bni_47] + [bni_47]x1[4] ≥ 0∧[1 + (-1)bso_48] ≥ 0)



    We simplified constraint (127) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (128)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])), ≥)∧[(-1)bni_47 + (-1)Bound*bni_47] + [bni_47]x1[4] ≥ 0∧[1 + (-1)bso_48] ≥ 0)



    We simplified constraint (128) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (129)    ([3] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] + [-1] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])), ≥)∧[(-1)bni_47 + (-1)Bound*bni_47] + [bni_47]x1[4] ≥ 0∧[1 + (-1)bso_48] ≥ 0)



    We simplified constraint (129) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (130)    ([2] + [-1]x1[4] ≥ 0∧x3[4] + [-1]x2[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])), ≥)∧[(-1)Bound*bni_47] + [bni_47]x1[4] ≥ 0∧[1 + (-1)bso_48] ≥ 0)



    We simplified constraint (130) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (131)    ([2] + [-1]x1[4] ≥ 0∧x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])), ≥)∧[(-1)Bound*bni_47] + [bni_47]x1[4] ≥ 0∧[1 + (-1)bso_48] ≥ 0)



    We simplified constraint (131) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (132)    ([2] + [-1]x1[4] ≥ 0∧x3[4] ≥ 0∧x1[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])), ≥)∧[(-1)Bound*bni_47] + [bni_47]x1[4] ≥ 0∧[1 + (-1)bso_48] ≥ 0)


    (133)    ([2] + [-1]x1[4] ≥ 0∧x3[4] ≥ 0∧x1[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])), ≥)∧[(-1)Bound*bni_47] + [bni_47]x1[4] ≥ 0∧[1 + (-1)bso_48] ≥ 0)







For Pair 4434_0_TEST_GE(x1, x3, x2) → COND_4434_0_TEST_GE1(&&(<(x3, x2), <(x1, 3)), x1, x3, x2, x4) the following chains were created:
  • We consider the chain COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1]), 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[2], 0, x0[2]), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]) which results in the following constraint:

    (134)    (2112_0_length_Load(x3[1])=2496_0_length_Return(x0[2])∧-(x2[1], 1)=x2[2]x3[1]=java.lang.Object(List(1878_0_length_Return))∧x2[2]=x1[6]0=x3[6]x0[2]=x2[6]4434_0_TEST_GE(x1[6], x3[6], x2[6])≥NonInfC∧4434_0_TEST_GE(x1[6], x3[6], x2[6])≥COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (134) using rules (III), (VII) which results in the following new constraint:

    (135)    (java.lang.Object(List(1878_0_length_Return))=x292112_0_length_Load(x29)=2496_0_length_Return(x0[2]) ⇒ 4434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥COND_4434_0_TEST_GE1(&&(<(0, x0[2]), <(-(x2[1], 1), 3)), -(x2[1], 1), 0, x0[2], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (135) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x29)=2496_0_length_Return(x0[2]) which results in the following new constraint:

    (136)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2])∧java.lang.Object(List(1878_0_length_Return))=x304434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥COND_4434_0_TEST_GE1(&&(<(0, x0[2]), <(-(x2[1], 1), 3)), -(x2[1], 1), 0, x0[2], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (136) using rule (IV) which results in the following new constraint:

    (137)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2]) ⇒ 4434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, x0[2])≥COND_4434_0_TEST_GE1(&&(<(0, x0[2]), <(-(x2[1], 1), 3)), -(x2[1], 1), 0, x0[2], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (137) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (138)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x2[1] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (138) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (139)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x2[1] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (139) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (140)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x2[1] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (140) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (141)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧0 = 0∧[bni_49] = 0∧[(-2)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_50] ≥ 0)



  • We consider the chain COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1]), 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[3], 0, 1), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]) which results in the following constraint:

    (142)    (2112_0_length_Load(x3[1])=1878_0_length_Return-(x2[1], 1)=x2[3]x3[1]=java.lang.Object(List(1878_0_length_Return))∧x2[3]=x1[6]0=x3[6]1=x2[6]4434_0_TEST_GE(x1[6], x3[6], x2[6])≥NonInfC∧4434_0_TEST_GE(x1[6], x3[6], x2[6])≥COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (142) using rules (III), (VII) which results in the following new constraint:

    (143)    (java.lang.Object(List(1878_0_length_Return))=x312112_0_length_Load(x31)=1878_0_length_Return4434_0_TEST_GE(-(x2[1], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, 1)≥COND_4434_0_TEST_GE1(&&(<(0, 1), <(-(x2[1], 1), 3)), -(x2[1], 1), 0, 1, x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (143) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x31)=1878_0_length_Return which results in the following new constraint:

    (144)    (1870_0_length_NONNULL=1878_0_length_Returnjava.lang.Object(List(1878_0_length_Return))=x324434_0_TEST_GE(-(x2[1], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, 1)≥COND_4434_0_TEST_GE1(&&(<(0, 1), <(-(x2[1], 1), 3)), -(x2[1], 1), 0, 1, x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (144) using rule (IV) which results in the following new constraint:

    (145)    (1870_0_length_NONNULL=1878_0_length_Return4434_0_TEST_GE(-(x2[1], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x2[1], 1), 0, 1)≥COND_4434_0_TEST_GE1(&&(<(0, 1), <(-(x2[1], 1), 3)), -(x2[1], 1), 0, 1, x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (145) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (146)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x2[1] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (146) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (147)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x2[1] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (147) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (148)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x2[1] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (148) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (149)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[bni_49] = 0∧[(-2)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧[(-1)bso_50] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8]), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]) which results in the following constraint:

    (150)    (4467_0_bubble_Load(x4[7])=1878_0_length_Returnx1[7]=x1[8]x2[7]=x2[8]x3[7]=x3[8]x4[7]=NULLx1[8]=x1[6]+(x3[8], 1)=x3[6]x2[8]=x2[6]4434_0_TEST_GE(x1[6], x3[6], x2[6])≥NonInfC∧4434_0_TEST_GE(x1[6], x3[6], x2[6])≥COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (150) using rules (III), (VII) which results in the following new constraint:

    (151)    (NULL=x334467_0_bubble_Load(x33)=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x3[8], 1), x2[7]), <(x1[7], 3)), x1[7], +(x3[8], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (151) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x33)=1878_0_length_Return which results in the following new constraint:

    (152)    (4388_0_bubble_NULL(x34)=1878_0_length_ReturnNULL=x344434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x3[8], 1), x2[7]), <(x1[7], 3)), x1[7], +(x3[8], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (152) using rule (III) which results in the following new constraint:

    (153)    (4388_0_bubble_NULL(NULL)=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x3[8], 1), x2[7]), <(x1[7], 3)), x1[7], +(x3[8], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (153) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (154)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[7] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (154) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (155)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[7] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (155) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (156)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[7] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (156) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (157)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧0 = 0∧0 = 0∧[bni_49] = 0∧[(-1)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_50] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9]), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]) which results in the following constraint:

    (158)    (4467_0_bubble_Load(x4[7])=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧x1[7]=x2[9]x2[7]=x3[9]x3[7]=x4[9]x4[7]=java.lang.Object(List(x0[9]))∧x2[9]=x1[6]+(x4[9], 1)=x3[6]x3[9]=x2[6]4434_0_TEST_GE(x1[6], x3[6], x2[6])≥NonInfC∧4434_0_TEST_GE(x1[6], x3[6], x2[6])≥COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (158) using rules (III), (VII) which results in the following new constraint:

    (159)    (java.lang.Object(List(x0[9]))=x354467_0_bubble_Load(x35)=4457_0_bubble_Return(java.lang.Object(List(x0[9]))) ⇒ 4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x4[9], 1), x2[7]), <(x1[7], 3)), x1[7], +(x4[9], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (159) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x35)=4457_0_bubble_Return(java.lang.Object(List(x0[9]))) which results in the following new constraint:

    (160)    (4388_0_bubble_NULL(x36)=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧java.lang.Object(List(x0[9]))=x364434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x4[9], 1), x2[7]), <(x1[7], 3)), x1[7], +(x4[9], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (160) using rule (III) which results in the following new constraint:

    (161)    (4388_0_bubble_NULL(java.lang.Object(List(x0[9])))=4457_0_bubble_Return(java.lang.Object(List(x0[9]))) ⇒ 4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x4[9], 1), x2[7]), <(x1[7], 3)), x1[7], +(x4[9], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (161) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (162)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[7] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (162) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (163)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[7] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (163) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (164)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[7] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (164) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (165)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧0 = 0∧0 = 0∧[bni_49] = 0∧[(-1)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_50] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10]), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]) which results in the following constraint:

    (166)    (4467_0_bubble_Load(x4[7])=1878_0_length_Returnx1[7]=x1[10]x2[7]=x2[10]x3[7]=x3[10]x4[7]=x4[10]x1[10]=x1[6]+(x3[10], 1)=x3[6]x2[10]=x2[6]4434_0_TEST_GE(x1[6], x3[6], x2[6])≥NonInfC∧4434_0_TEST_GE(x1[6], x3[6], x2[6])≥COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (166) using rules (III), (IV) which results in the following new constraint:

    (167)    (4467_0_bubble_Load(x4[7])=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x3[10], 1), x2[7]), <(x1[7], 3)), x1[7], +(x3[10], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (167) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x4[7])=1878_0_length_Return which results in the following new constraint:

    (168)    (4388_0_bubble_NULL(x37)=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x3[10], 1), x2[7]), <(x1[7], 3)), x1[7], +(x3[10], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (168) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (169)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[7] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (169) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (170)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[7] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (170) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (171)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[7] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (171) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (172)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧0 = 0∧0 = 0∧[bni_49] = 0∧[(-1)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_50] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5]), 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[2], 0, x0[2]), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]) which results in the following constraint:

    (173)    (2112_0_length_Load(x4[5])=2496_0_length_Return(x0[2])∧-(x1[5], 1)=x2[2]x4[5]=java.lang.Object(List(1878_0_length_Return))∧x2[2]=x1[6]0=x3[6]x0[2]=x2[6]4434_0_TEST_GE(x1[6], x3[6], x2[6])≥NonInfC∧4434_0_TEST_GE(x1[6], x3[6], x2[6])≥COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (173) using rules (III), (VII) which results in the following new constraint:

    (174)    (java.lang.Object(List(1878_0_length_Return))=x382112_0_length_Load(x38)=2496_0_length_Return(x0[2]) ⇒ 4434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥COND_4434_0_TEST_GE1(&&(<(0, x0[2]), <(-(x1[5], 1), 3)), -(x1[5], 1), 0, x0[2], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (174) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x38)=2496_0_length_Return(x0[2]) which results in the following new constraint:

    (175)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2])∧java.lang.Object(List(1878_0_length_Return))=x394434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥COND_4434_0_TEST_GE1(&&(<(0, x0[2]), <(-(x1[5], 1), 3)), -(x1[5], 1), 0, x0[2], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (175) using rule (IV) which results in the following new constraint:

    (176)    (1870_0_length_NONNULL=2496_0_length_Return(x0[2]) ⇒ 4434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, x0[2])≥COND_4434_0_TEST_GE1(&&(<(0, x0[2]), <(-(x1[5], 1), 3)), -(x1[5], 1), 0, x0[2], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (176) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (177)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[5] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (177) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (178)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[5] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (178) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (179)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[5] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (179) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (180)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧0 = 0∧[bni_49] = 0∧[(-2)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_50] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5]), 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[3], 0, 1), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]) which results in the following constraint:

    (181)    (2112_0_length_Load(x4[5])=1878_0_length_Return-(x1[5], 1)=x2[3]x4[5]=java.lang.Object(List(1878_0_length_Return))∧x2[3]=x1[6]0=x3[6]1=x2[6]4434_0_TEST_GE(x1[6], x3[6], x2[6])≥NonInfC∧4434_0_TEST_GE(x1[6], x3[6], x2[6])≥COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (181) using rules (III), (VII) which results in the following new constraint:

    (182)    (java.lang.Object(List(1878_0_length_Return))=x402112_0_length_Load(x40)=1878_0_length_Return4434_0_TEST_GE(-(x1[5], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, 1)≥COND_4434_0_TEST_GE1(&&(<(0, 1), <(-(x1[5], 1), 3)), -(x1[5], 1), 0, 1, x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (182) using rule (V) (with possible (I) afterwards) using induction on 2112_0_length_Load(x40)=1878_0_length_Return which results in the following new constraint:

    (183)    (1870_0_length_NONNULL=1878_0_length_Returnjava.lang.Object(List(1878_0_length_Return))=x414434_0_TEST_GE(-(x1[5], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, 1)≥COND_4434_0_TEST_GE1(&&(<(0, 1), <(-(x1[5], 1), 3)), -(x1[5], 1), 0, 1, x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (183) using rule (IV) which results in the following new constraint:

    (184)    (1870_0_length_NONNULL=1878_0_length_Return4434_0_TEST_GE(-(x1[5], 1), 0, 1)≥NonInfC∧4434_0_TEST_GE(-(x1[5], 1), 0, 1)≥COND_4434_0_TEST_GE1(&&(<(0, 1), <(-(x1[5], 1), 3)), -(x1[5], 1), 0, 1, x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (184) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (185)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[5] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (185) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (186)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[5] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (186) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (187)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[5] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (187) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (188)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[bni_49] = 0∧[(-2)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧[(-1)bso_50] ≥ 0)







For Pair COND_4434_0_TEST_GE1(TRUE, x1, x3, x2, x4) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4), x1, x2, x3, x4) the following chains were created:
  • We consider the chain 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]), COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]) which results in the following constraint:

    (189)    (&&(<(x3[6], x2[6]), <(x1[6], 3))=TRUEx1[6]=x1[7]x3[6]=x3[7]x2[6]=x2[7]x4[6]=x4[7]COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7])≥NonInfC∧COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7])≥4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])∧(UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥))



    We simplified constraint (189) using rules (III), (IDP_BOOLEAN) which results in the following new constraint:

    (190)    (<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUECOND_4434_0_TEST_GE1(TRUE, x1[6], x3[6], x2[6], x4[6])≥NonInfC∧COND_4434_0_TEST_GE1(TRUE, x1[6], x3[6], x2[6], x4[6])≥4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[6]), x1[6], x2[6], x3[6], x4[6])∧(UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥))



    We simplified constraint (190) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (191)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (191) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (192)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (192) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (193)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (193) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (194)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (194) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (195)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)


    (196)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (195) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (197)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)


    (198)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [(-1)bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (196) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (199)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)


    (200)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [(-1)bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)







For Pair 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1, x2, x3, NULL) → 4434_0_TEST_GE(x1, +(x3, 1), x2) the following chains were created:
  • We consider the chain 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]), COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8]) which results in the following constraint:

    (201)    (&&(<(x3[6], x2[6]), <(x1[6], 3))=TRUEx1[6]=x1[7]x3[6]=x3[7]x2[6]=x2[7]x4[6]=x4[7]4467_0_bubble_Load(x4[7])=1878_0_length_Returnx1[7]=x1[8]x2[7]=x2[8]x3[7]=x3[8]x4[7]=NULL4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL)≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL)≥4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])∧(UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥))



    We simplified constraint (201) using rules (III), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (202)    (NULL=x424467_0_bubble_Load(x42)=1878_0_length_Return<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥))



    We simplified constraint (202) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x42)=1878_0_length_Return which results in the following new constraint:

    (203)    (4388_0_bubble_NULL(x43)=1878_0_length_ReturnNULL=x43<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥))



    We simplified constraint (203) using rule (III) which results in the following new constraint:

    (204)    (4388_0_bubble_NULL(NULL)=1878_0_length_Return<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥))



    We simplified constraint (204) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (205)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (205) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (206)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (206) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (207)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (207) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (208)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (208) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (209)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)


    (210)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (209) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (211)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)


    (212)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [(-1)bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (210) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (213)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [(-1)bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)


    (214)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)







For Pair 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0))), x2, x3, x4, java.lang.Object(List(x0))) → 4434_0_TEST_GE(x2, +(x4, 1), x3) the following chains were created:
  • We consider the chain 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]), COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9]) which results in the following constraint:

    (215)    (&&(<(x3[6], x2[6]), <(x1[6], 3))=TRUEx1[6]=x1[7]x3[6]=x3[7]x2[6]=x2[7]x4[6]=x4[7]4467_0_bubble_Load(x4[7])=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧x1[7]=x2[9]x2[7]=x3[9]x3[7]=x4[9]x4[7]=java.lang.Object(List(x0[9])) ⇒ 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9])))≥NonInfC∧4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9])))≥4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])∧(UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥))



    We simplified constraint (215) using rules (III), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (216)    (java.lang.Object(List(x0[9]))=x444467_0_bubble_Load(x44)=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥NonInfC∧4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥))



    We simplified constraint (216) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x44)=4457_0_bubble_Return(java.lang.Object(List(x0[9]))) which results in the following new constraint:

    (217)    (4388_0_bubble_NULL(x45)=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧java.lang.Object(List(x0[9]))=x45<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥NonInfC∧4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥))



    We simplified constraint (217) using rule (III) which results in the following new constraint:

    (218)    (4388_0_bubble_NULL(java.lang.Object(List(x0[9])))=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥NonInfC∧4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥))



    We simplified constraint (218) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (219)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (219) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (220)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (220) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (221)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (221) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (222)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (222) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (223)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)


    (224)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (223) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (225)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)


    (226)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [(-1)bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (224) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (227)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)


    (228)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [(-1)bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)







For Pair 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1, x2, x3, x4) → 4434_0_TEST_GE(x1, +(x3, 1), x2) the following chains were created:
  • We consider the chain 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]), COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10]) which results in the following constraint:

    (229)    (&&(<(x3[6], x2[6]), <(x1[6], 3))=TRUEx1[6]=x1[7]x3[6]=x3[7]x2[6]=x2[7]x4[6]=x4[7]4467_0_bubble_Load(x4[7])=1878_0_length_Returnx1[7]=x1[10]x2[7]=x2[10]x3[7]=x3[10]x4[7]=x4[10]4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10])≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10])≥4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])∧(UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥))



    We simplified constraint (229) using rules (III), (IDP_BOOLEAN) which results in the following new constraint:

    (230)    (4467_0_bubble_Load(x4[7])=1878_0_length_Return<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], x4[7])≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], x4[7])≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥))



    We simplified constraint (230) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x4[7])=1878_0_length_Return which results in the following new constraint:

    (231)    (4388_0_bubble_NULL(x46)=1878_0_length_Return<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], x46)≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], x46)≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥))



    We simplified constraint (231) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (232)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (232) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (233)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (233) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (234)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (234) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (235)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (235) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (236)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)


    (237)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (236) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (238)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)


    (239)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [(-1)bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (237) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (240)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)


    (241)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [(-1)bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2, NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2, 0), <(x2, 4)), 1878_0_length_Return, x2, NULL, x3)
    • (x2[0] ≥ 0∧[2] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0]1, 0), <(x2[0]1, 4)), 1878_0_length_Return, x2[0]1, NULL, x3[0]1)), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x2[0] ≥ 0∧[(-1)bso_38] ≥ 0)
    • ([2] + [-1]x1[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[4] ≥ 0∧[(-1)bso_38] ≥ 0)

  • COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2, NULL, x3) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3), -(x2, 1), x3)
    • (x2[1] ≥ 0∧[2] + [-1]x2[1] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]1), -(x2[1]1, 1), x3[1]1)), ≥)∧[(-1)Bound*bni_39] + [bni_39]x2[1] ≥ 0∧[1 + (-1)bso_40] ≥ 0)
    • (x1[5] ≥ 0∧[2] + [-1]x1[5] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])), ≥)∧[(-1)Bound*bni_39] + [bni_39]x1[5] ≥ 0∧[1 + (-1)bso_40] ≥ 0)

  • 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0), x2, java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2, 0, x0)
    • (x2[0] ≥ 0∧[2] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x2[0] ≥ 0∧0 = 0∧[(-1)bso_42] ≥ 0)
    • ([2] + [-1]x1[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[2], 0, x0[2])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧0 = 0∧[(-1)bso_42] ≥ 0)

  • 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2, java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2, 0, 1)
    • (x2[0] ≥ 0∧[2] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥)∧[(-1)bni_43 + (-1)Bound*bni_43] + [bni_43]x2[0] ≥ 0∧[(-1)bso_44] ≥ 0)
    • ([2] + [-1]x1[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[3], 0, 1)), ≥)∧[(-1)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[4] ≥ 0∧[(-1)bso_44] ≥ 0)

  • 4434_0_TEST_GE(x1, x3, x2) → COND_4434_0_TEST_GE(&&(&&(>=(x3, x2), >(x1, 0)), <(x1, 4)), x1, x3, x2, x4)
    • ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧0 = 0∧[bni_45] = 0∧[(-2)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[bni_45] = 0∧[(-2)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧[(-1)bso_46] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧0 = 0∧0 = 0∧[bni_45] = 0∧[(-1)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧0 = 0∧0 = 0∧[bni_45] = 0∧[(-1)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧0 = 0∧0 = 0∧[bni_45] = 0∧[(-1)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧0 = 0∧[bni_45] = 0∧[(-2)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])), ≥)∧[bni_45] = 0∧[(-2)bni_45 + (-1)Bound*bni_45] ≥ 0∧0 = 0∧[(-1)bso_46] ≥ 0)

  • COND_4434_0_TEST_GE(TRUE, x1, x3, x2, x4) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4), -(x1, 1), x4)
    • ([2] + [-1]x1[4] ≥ 0∧x3[4] ≥ 0∧x1[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])), ≥)∧[(-1)Bound*bni_47] + [bni_47]x1[4] ≥ 0∧[1 + (-1)bso_48] ≥ 0)
    • ([2] + [-1]x1[4] ≥ 0∧x3[4] ≥ 0∧x1[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])), ≥)∧[(-1)Bound*bni_47] + [bni_47]x1[4] ≥ 0∧[1 + (-1)bso_48] ≥ 0)

  • 4434_0_TEST_GE(x1, x3, x2) → COND_4434_0_TEST_GE1(&&(<(x3, x2), <(x1, 3)), x1, x3, x2, x4)
    • ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧0 = 0∧[bni_49] = 0∧[(-2)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_50] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[bni_49] = 0∧[(-2)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧[(-1)bso_50] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧0 = 0∧0 = 0∧[bni_49] = 0∧[(-1)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_50] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧0 = 0∧0 = 0∧[bni_49] = 0∧[(-1)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_50] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧0 = 0∧0 = 0∧[bni_49] = 0∧[(-1)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_50] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧0 = 0∧[bni_49] = 0∧[(-2)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_50] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[bni_49] = 0∧[(-2)bni_49 + (-1)Bound*bni_49] ≥ 0∧0 = 0∧[(-1)bso_50] ≥ 0)

  • COND_4434_0_TEST_GE1(TRUE, x1, x3, x2, x4) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4), x1, x2, x3, x4)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [(-1)bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] + [(-1)bni_51]x1[6] ≥ 0∧[(-1)bso_52] ≥ 0)

  • 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1, x2, x3, NULL) → 4434_0_TEST_GE(x1, +(x3, 1), x2)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [(-1)bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [(-1)bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] + [bni_53]x1[6] ≥ 0∧[(-1)bso_54] ≥ 0)

  • 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0))), x2, x3, x4, java.lang.Object(List(x0))) → 4434_0_TEST_GE(x2, +(x4, 1), x3)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [(-1)bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] + [(-1)bni_55]x1[6] ≥ 0∧[(-1)bso_56] ≥ 0)

  • 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1, x2, x3, x4) → 4434_0_TEST_GE(x1, +(x3, 1), x2)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [(-1)bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [(-1)bni_57]x1[6] ≥ 0∧[(-1)bso_58] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(2112_0_length_Load(x1)) = [-1]   
POL(1870_0_length_NONNULL) = [-1]   
POL(4467_0_bubble_Load(x1)) = [-1]   
POL(4388_0_bubble_NULL(x1)) = [-1]   
POL(1878_0_length_Return) = [-1]   
POL(1924_1_length_InvokeMethod(x1)) = [-1]   
POL(2496_0_length_Return(x1)) = [-1] + x1   
POL(Cond_1924_1_length_InvokeMethod(x1, x2)) = [-1] + x2   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(2) = [2]   
POL(4469_1_test_InvokeMethod(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(NULL) = [-1]   
POL(java.lang.Object(x1)) = [-1]   
POL(List(x1)) = [-1]   
POL(4443_0_bubble_NONNULL(x1)) = [-1]   
POL(4457_0_bubble_Return(x1)) = [-1]   
POL(4641_1_bubble_InvokeMethod(x1)) = [-1]   
POL(2112_1_TEST_INVOKEMETHOD(x1, x2, x3)) = [-1] + x2   
POL(COND_2112_1_TEST_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + x3   
POL(&&(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(4) = [4]   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(4434_0_TEST_GE(x1, x2, x3)) = [-1] + x1   
POL(COND_4434_0_TEST_GE(x1, x2, x3, x4, x5)) = [-1] + x2   
POL(>=(x1, x2)) = [-1]   
POL(COND_4434_0_TEST_GE1(x1, x2, x3, x4, x5)) = [-1] + x2   
POL(3) = [3]   
POL(4467_1_TEST_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + x2   

The following pairs are in P>:

COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])
COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])

The following pairs are in Pbound:

2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])
COND_2112_1_TEST_INVOKEMETHOD(TRUE, 1878_0_length_Return, x2[1], NULL, x3[1]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x3[1]), -(x2[1], 1), x3[1])
2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[2], 0, x0[2])
2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[3], 0, 1)
COND_4434_0_TEST_GE(TRUE, x1[5], x3[5], x2[5], x4[5]) → 2112_1_TEST_INVOKEMETHOD(2112_0_length_Load(x4[5]), -(x1[5], 1), x4[5])

The following pairs are in P:

2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL) → COND_2112_1_TEST_INVOKEMETHOD(&&(>(x2[0], 0), <(x2[0], 4)), 1878_0_length_Return, x2[0], NULL, x3[0])
2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[2], 0, x0[2])
2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[3], 0, 1)
4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(&&(&&(>=(x3[4], x2[4]), >(x1[4], 0)), <(x1[4], 4)), x1[4], x3[4], x2[4], x4[4])
4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])
COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])
4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])
4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])
4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])

There are no usable rules.

(27) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
2112_0_length_Load(x0) → 1870_0_length_NONNULL
4467_0_bubble_Load(x0) → 4388_0_bubble_NULL(x0)
1870_0_length_NONNULL1878_0_length_Return
1870_0_length_NONNULL1924_1_length_InvokeMethod(1870_0_length_NONNULL)
1924_1_length_InvokeMethod(1878_0_length_Return) → 1878_0_length_Return
1924_1_length_InvokeMethod(2496_0_length_Return(x0)) → Cond_1924_1_length_InvokeMethod(x0 > 0, 2496_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0)) → 2496_0_length_Return(1 + x0)
1924_1_length_InvokeMethod(1878_0_length_Return) → 2496_0_length_Return(2)
4469_1_test_InvokeMethod(1878_0_length_Return, -1) → 1878_0_length_Return
4469_1_test_InvokeMethod(1878_0_length_Return, x1) → 1878_0_length_Return
4388_0_bubble_NULL(NULL) → 1878_0_length_Return
4388_0_bubble_NULL(java.lang.Object(List(x0))) → 4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))) → 4443_0_bubble_NONNULL(java.lang.Object(List(1878_0_length_Return)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4457_0_bubble_Return(java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(1878_0_length_Return)))) → 1878_0_length_Return
4641_1_bubble_InvokeMethod(1878_0_length_Return) → 1878_0_length_Return

The integer pair graph contains the following rules and edges:
(0): 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[0], NULL) → COND_2112_1_TEST_INVOKEMETHOD(x2[0] > 0 && x2[0] < 4, 1878_0_length_Return, x2[0], NULL, x3[0])
(2): 2112_1_TEST_INVOKEMETHOD(2496_0_length_Return(x0[2]), x2[2], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[2], 0, x0[2])
(3): 2112_1_TEST_INVOKEMETHOD(1878_0_length_Return, x2[3], java.lang.Object(List(1878_0_length_Return))) → 4434_0_TEST_GE(x2[3], 0, 1)
(4): 4434_0_TEST_GE(x1[4], x3[4], x2[4]) → COND_4434_0_TEST_GE(x3[4] >= x2[4] && x1[4] > 0 && x1[4] < 4, x1[4], x3[4], x2[4], x4[4])
(6): 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(x3[6] < x2[6] && x1[6] < 3, x1[6], x3[6], x2[6], x4[6])
(7): COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])
(8): 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], x3[8] + 1, x2[8])
(9): 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], x4[9] + 1, x3[9])
(10): 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], x3[10] + 1, x2[10])

(2) -> (4), if (x2[2]* x1[4]0* x3[4]x0[2]* x2[4])


(3) -> (4), if (x2[3]* x1[4]0* x3[4]1* x2[4])


(8) -> (4), if (x1[8]* x1[4]x3[8] + 1* x3[4]x2[8]* x2[4])


(9) -> (4), if (x2[9]* x1[4]x4[9] + 1* x3[4]x3[9]* x2[4])


(10) -> (4), if (x1[10]* x1[4]x3[10] + 1* x3[4]x2[10]* x2[4])


(2) -> (6), if (x2[2]* x1[6]0* x3[6]x0[2]* x2[6])


(3) -> (6), if (x2[3]* x1[6]0* x3[6]1* x2[6])


(8) -> (6), if (x1[8]* x1[6]x3[8] + 1* x3[6]x2[8]* x2[6])


(9) -> (6), if (x2[9]* x1[6]x4[9] + 1* x3[6]x3[9]* x2[6])


(10) -> (6), if (x1[10]* x1[6]x3[10] + 1* x3[6]x2[10]* x2[6])


(6) -> (7), if (x3[6] < x2[6] && x1[6] < 3x1[6]* x1[7]x3[6]* x3[7]x2[6]* x2[7]x4[6]* x4[7])


(7) -> (8), if (4467_0_bubble_Load(x4[7]) →* 1878_0_length_Returnx1[7]* x1[8]x2[7]* x2[8]x3[7]* x3[8]x4[7]* NULL)


(7) -> (9), if (4467_0_bubble_Load(x4[7]) →* 4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧x1[7]* x2[9]x2[7]* x3[9]x3[7]* x4[9]x4[7]* java.lang.Object(List(x0[9])))


(7) -> (10), if (4467_0_bubble_Load(x4[7]) →* 1878_0_length_Returnx1[7]* x1[10]x2[7]* x2[10]x3[7]* x3[10]x4[7]* x4[10])



The set Q consists of the following terms:
2112_0_length_Load(x0)
4467_0_bubble_Load(x0)
1870_0_length_NONNULL
1924_1_length_InvokeMethod(1878_0_length_Return)
1924_1_length_InvokeMethod(2496_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0))
4469_1_test_InvokeMethod(1878_0_length_Return, x0)
4388_0_bubble_NULL(NULL)
4388_0_bubble_NULL(java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(1878_0_length_Return))))
4641_1_bubble_InvokeMethod(1878_0_length_Return)

(28) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 4 less nodes.

(29) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
2112_0_length_Load(x0) → 1870_0_length_NONNULL
4467_0_bubble_Load(x0) → 4388_0_bubble_NULL(x0)
1870_0_length_NONNULL1878_0_length_Return
1870_0_length_NONNULL1924_1_length_InvokeMethod(1870_0_length_NONNULL)
1924_1_length_InvokeMethod(1878_0_length_Return) → 1878_0_length_Return
1924_1_length_InvokeMethod(2496_0_length_Return(x0)) → Cond_1924_1_length_InvokeMethod(x0 > 0, 2496_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0)) → 2496_0_length_Return(1 + x0)
1924_1_length_InvokeMethod(1878_0_length_Return) → 2496_0_length_Return(2)
4469_1_test_InvokeMethod(1878_0_length_Return, -1) → 1878_0_length_Return
4469_1_test_InvokeMethod(1878_0_length_Return, x1) → 1878_0_length_Return
4388_0_bubble_NULL(NULL) → 1878_0_length_Return
4388_0_bubble_NULL(java.lang.Object(List(x0))) → 4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))) → 4443_0_bubble_NONNULL(java.lang.Object(List(1878_0_length_Return)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4457_0_bubble_Return(java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(1878_0_length_Return)))) → 1878_0_length_Return
4641_1_bubble_InvokeMethod(1878_0_length_Return) → 1878_0_length_Return

The integer pair graph contains the following rules and edges:
(10): 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], x3[10] + 1, x2[10])
(9): 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], x4[9] + 1, x3[9])
(8): 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], x3[8] + 1, x2[8])
(7): COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])
(6): 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(x3[6] < x2[6] && x1[6] < 3, x1[6], x3[6], x2[6], x4[6])

(8) -> (6), if (x1[8]* x1[6]x3[8] + 1* x3[6]x2[8]* x2[6])


(9) -> (6), if (x2[9]* x1[6]x4[9] + 1* x3[6]x3[9]* x2[6])


(10) -> (6), if (x1[10]* x1[6]x3[10] + 1* x3[6]x2[10]* x2[6])


(6) -> (7), if (x3[6] < x2[6] && x1[6] < 3x1[6]* x1[7]x3[6]* x3[7]x2[6]* x2[7]x4[6]* x4[7])


(7) -> (8), if (4467_0_bubble_Load(x4[7]) →* 1878_0_length_Returnx1[7]* x1[8]x2[7]* x2[8]x3[7]* x3[8]x4[7]* NULL)


(7) -> (9), if (4467_0_bubble_Load(x4[7]) →* 4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧x1[7]* x2[9]x2[7]* x3[9]x3[7]* x4[9]x4[7]* java.lang.Object(List(x0[9])))


(7) -> (10), if (4467_0_bubble_Load(x4[7]) →* 1878_0_length_Returnx1[7]* x1[10]x2[7]* x2[10]x3[7]* x3[10]x4[7]* x4[10])



The set Q consists of the following terms:
2112_0_length_Load(x0)
4467_0_bubble_Load(x0)
1870_0_length_NONNULL
1924_1_length_InvokeMethod(1878_0_length_Return)
1924_1_length_InvokeMethod(2496_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0))
4469_1_test_InvokeMethod(1878_0_length_Return, x0)
4388_0_bubble_NULL(NULL)
4388_0_bubble_NULL(java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(1878_0_length_Return))))
4641_1_bubble_InvokeMethod(1878_0_length_Return)

(30) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(31) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
4467_0_bubble_Load(x0) → 4388_0_bubble_NULL(x0)
4388_0_bubble_NULL(NULL) → 1878_0_length_Return
4388_0_bubble_NULL(java.lang.Object(List(x0))) → 4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))) → 4443_0_bubble_NONNULL(java.lang.Object(List(1878_0_length_Return)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(1878_0_length_Return)))) → 1878_0_length_Return
4641_1_bubble_InvokeMethod(1878_0_length_Return) → 1878_0_length_Return
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4457_0_bubble_Return(java.lang.Object(List(x0)))

The integer pair graph contains the following rules and edges:
(10): 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], x3[10] + 1, x2[10])
(9): 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], x4[9] + 1, x3[9])
(8): 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], x3[8] + 1, x2[8])
(7): COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])
(6): 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(x3[6] < x2[6] && x1[6] < 3, x1[6], x3[6], x2[6], x4[6])

(8) -> (6), if (x1[8]* x1[6]x3[8] + 1* x3[6]x2[8]* x2[6])


(9) -> (6), if (x2[9]* x1[6]x4[9] + 1* x3[6]x3[9]* x2[6])


(10) -> (6), if (x1[10]* x1[6]x3[10] + 1* x3[6]x2[10]* x2[6])


(6) -> (7), if (x3[6] < x2[6] && x1[6] < 3x1[6]* x1[7]x3[6]* x3[7]x2[6]* x2[7]x4[6]* x4[7])


(7) -> (8), if (4467_0_bubble_Load(x4[7]) →* 1878_0_length_Returnx1[7]* x1[8]x2[7]* x2[8]x3[7]* x3[8]x4[7]* NULL)


(7) -> (9), if (4467_0_bubble_Load(x4[7]) →* 4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧x1[7]* x2[9]x2[7]* x3[9]x3[7]* x4[9]x4[7]* java.lang.Object(List(x0[9])))


(7) -> (10), if (4467_0_bubble_Load(x4[7]) →* 1878_0_length_Returnx1[7]* x1[10]x2[7]* x2[10]x3[7]* x3[10]x4[7]* x4[10])



The set Q consists of the following terms:
2112_0_length_Load(x0)
4467_0_bubble_Load(x0)
1870_0_length_NONNULL
1924_1_length_InvokeMethod(1878_0_length_Return)
1924_1_length_InvokeMethod(2496_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0))
4469_1_test_InvokeMethod(1878_0_length_Return, x0)
4388_0_bubble_NULL(NULL)
4388_0_bubble_NULL(java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(1878_0_length_Return))))
4641_1_bubble_InvokeMethod(1878_0_length_Return)

(32) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@ef8e911 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 2 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10]) the following chains were created:
  • We consider the chain 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]), COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10]) which results in the following constraint:

    (1)    (&&(<(x3[6], x2[6]), <(x1[6], 3))=TRUEx1[6]=x1[7]x3[6]=x3[7]x2[6]=x2[7]x4[6]=x4[7]4467_0_bubble_Load(x4[7])=1878_0_length_Returnx1[7]=x1[10]x2[7]=x2[10]x3[7]=x3[10]x4[7]=x4[10]4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10])≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10])≥4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])∧(UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥))



    We simplified constraint (1) using rules (III), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (4467_0_bubble_Load(x4[7])=1878_0_length_Return<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], x4[7])≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], x4[7])≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥))



    We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x4[7])=1878_0_length_Return which results in the following new constraint:

    (3)    (4388_0_bubble_NULL(x0)=1878_0_length_Return<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], x0)≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], x0)≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥))



    We simplified constraint (3) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (4)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_19 + (-1)Bound*bni_19] + [bni_19]x2[6] + [(-1)bni_19]x1[6] + [(-1)bni_19]x3[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)



    We simplified constraint (4) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (5)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_19 + (-1)Bound*bni_19] + [bni_19]x2[6] + [(-1)bni_19]x1[6] + [(-1)bni_19]x3[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)



    We simplified constraint (5) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (6)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)bni_19 + (-1)Bound*bni_19] + [bni_19]x2[6] + [(-1)bni_19]x1[6] + [(-1)bni_19]x3[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)Bound*bni_19] + [bni_19]x2[6] + [(-1)bni_19]x1[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)



    We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (8)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)Bound*bni_19] + [bni_19]x2[6] + [(-1)bni_19]x1[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)


    (9)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)Bound*bni_19] + [bni_19]x2[6] + [(-1)bni_19]x1[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)



    We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (10)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)Bound*bni_19] + [bni_19]x2[6] + [(-1)bni_19]x1[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)


    (11)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)Bound*bni_19] + [bni_19]x2[6] + [bni_19]x1[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)



    We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (12)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)Bound*bni_19] + [bni_19]x2[6] + [(-1)bni_19]x1[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)


    (13)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)Bound*bni_19] + [bni_19]x2[6] + [bni_19]x1[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)







For Pair 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9]) the following chains were created:
  • We consider the chain 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]), COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9]) which results in the following constraint:

    (14)    (&&(<(x3[6], x2[6]), <(x1[6], 3))=TRUEx1[6]=x1[7]x3[6]=x3[7]x2[6]=x2[7]x4[6]=x4[7]4467_0_bubble_Load(x4[7])=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧x1[7]=x2[9]x2[7]=x3[9]x3[7]=x4[9]x4[7]=java.lang.Object(List(x0[9])) ⇒ 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9])))≥NonInfC∧4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9])))≥4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])∧(UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥))



    We simplified constraint (14) using rules (III), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (15)    (java.lang.Object(List(x0[9]))=x14467_0_bubble_Load(x1)=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥NonInfC∧4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥))



    We simplified constraint (15) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x1)=4457_0_bubble_Return(java.lang.Object(List(x0[9]))) which results in the following new constraint:

    (16)    (4388_0_bubble_NULL(x2)=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧java.lang.Object(List(x0[9]))=x2<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥NonInfC∧4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥))



    We simplified constraint (16) using rule (III) which results in the following new constraint:

    (17)    (4388_0_bubble_NULL(java.lang.Object(List(x0[9])))=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥NonInfC∧4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x1[6], x2[6], x3[6], java.lang.Object(List(x0[9])))≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥))



    We simplified constraint (17) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (18)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_21 + (-1)Bound*bni_21] + [bni_21]x2[6] + [(-1)bni_21]x1[6] + [(-1)bni_21]x3[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)



    We simplified constraint (18) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (19)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_21 + (-1)Bound*bni_21] + [bni_21]x2[6] + [(-1)bni_21]x1[6] + [(-1)bni_21]x3[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)



    We simplified constraint (19) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (20)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)bni_21 + (-1)Bound*bni_21] + [bni_21]x2[6] + [(-1)bni_21]x1[6] + [(-1)bni_21]x3[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)



    We simplified constraint (20) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (21)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)Bound*bni_21] + [bni_21]x2[6] + [(-1)bni_21]x1[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)



    We simplified constraint (21) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (22)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)Bound*bni_21] + [bni_21]x2[6] + [(-1)bni_21]x1[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)


    (23)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)Bound*bni_21] + [bni_21]x2[6] + [(-1)bni_21]x1[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)



    We simplified constraint (22) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (24)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)Bound*bni_21] + [bni_21]x2[6] + [(-1)bni_21]x1[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)


    (25)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)Bound*bni_21] + [bni_21]x2[6] + [bni_21]x1[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)



    We simplified constraint (23) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (26)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)Bound*bni_21] + [bni_21]x2[6] + [(-1)bni_21]x1[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)


    (27)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)Bound*bni_21] + [bni_21]x2[6] + [bni_21]x1[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)







For Pair 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8]) the following chains were created:
  • We consider the chain 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]), COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8]) which results in the following constraint:

    (28)    (&&(<(x3[6], x2[6]), <(x1[6], 3))=TRUEx1[6]=x1[7]x3[6]=x3[7]x2[6]=x2[7]x4[6]=x4[7]4467_0_bubble_Load(x4[7])=1878_0_length_Returnx1[7]=x1[8]x2[7]=x2[8]x3[7]=x3[8]x4[7]=NULL4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL)≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL)≥4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])∧(UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥))



    We simplified constraint (28) using rules (III), (VII), (IDP_BOOLEAN) which results in the following new constraint:

    (29)    (NULL=x34467_0_bubble_Load(x3)=1878_0_length_Return<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥))



    We simplified constraint (29) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x3)=1878_0_length_Return which results in the following new constraint:

    (30)    (4388_0_bubble_NULL(x4)=1878_0_length_ReturnNULL=x4<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥))



    We simplified constraint (30) using rule (III) which results in the following new constraint:

    (31)    (4388_0_bubble_NULL(NULL)=1878_0_length_Return<(x3[6], x2[6])=TRUE<(x1[6], 3)=TRUE4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥NonInfC∧4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[6], x2[6], x3[6], NULL)≥4434_0_TEST_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥))



    We simplified constraint (31) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (32)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_23 + (-1)Bound*bni_23] + [bni_23]x2[6] + [(-1)bni_23]x1[6] + [(-1)bni_23]x3[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)



    We simplified constraint (32) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (33)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_23 + (-1)Bound*bni_23] + [bni_23]x2[6] + [(-1)bni_23]x1[6] + [(-1)bni_23]x3[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)



    We simplified constraint (33) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (34)    (x2[6] + [-1] + [-1]x3[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)bni_23 + (-1)Bound*bni_23] + [bni_23]x2[6] + [(-1)bni_23]x1[6] + [(-1)bni_23]x3[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)



    We simplified constraint (34) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (35)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)Bound*bni_23] + [bni_23]x2[6] + [(-1)bni_23]x1[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)



    We simplified constraint (35) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (36)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)Bound*bni_23] + [bni_23]x2[6] + [(-1)bni_23]x1[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)


    (37)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)Bound*bni_23] + [bni_23]x2[6] + [(-1)bni_23]x1[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)



    We simplified constraint (36) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (38)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)Bound*bni_23] + [bni_23]x2[6] + [(-1)bni_23]x1[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)


    (39)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)Bound*bni_23] + [bni_23]x2[6] + [bni_23]x1[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)



    We simplified constraint (37) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (40)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)Bound*bni_23] + [bni_23]x2[6] + [bni_23]x1[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)


    (41)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)Bound*bni_23] + [bni_23]x2[6] + [(-1)bni_23]x1[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)







For Pair COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]) the following chains were created:
  • We consider the chain 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8]), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]), COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]) which results in the following constraint:

    (42)    (x1[8]=x1[6]+(x3[8], 1)=x3[6]x2[8]=x2[6]&&(<(x3[6], x2[6]), <(x1[6], 3))=TRUEx1[6]=x1[7]x3[6]=x3[7]x2[6]=x2[7]x4[6]=x4[7]COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7])≥NonInfC∧COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7])≥4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])∧(UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥))



    We simplified constraint (42) using rules (III), (IDP_BOOLEAN) which results in the following new constraint:

    (43)    (<(+(x3[8], 1), x2[6])=TRUE<(x1[6], 3)=TRUECOND_4434_0_TEST_GE1(TRUE, x1[6], +(x3[8], 1), x2[6], x4[6])≥NonInfC∧COND_4434_0_TEST_GE1(TRUE, x1[6], +(x3[8], 1), x2[6], x4[6])≥4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[6]), x1[6], x2[6], +(x3[8], 1), x4[6])∧(UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥))



    We simplified constraint (43) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (44)    (x2[6] + [-2] + [-1]x3[8] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-2)bni_25 + (-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] + [(-1)bni_25]x3[8] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (44) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (45)    (x2[6] + [-2] + [-1]x3[8] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-2)bni_25 + (-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] + [(-1)bni_25]x3[8] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (45) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (46)    (x2[6] + [-2] + [-1]x3[8] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-2)bni_25 + (-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] + [(-1)bni_25]x3[8] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (46) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (47)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (47) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (48)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[8] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)


    (49)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[8] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (48) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (50)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[8] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)


    (51)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[8] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (49) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (52)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[8] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)


    (53)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[8] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)



  • We consider the chain 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9]), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]), COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]) which results in the following constraint:

    (54)    (x2[9]=x1[6]+(x4[9], 1)=x3[6]x3[9]=x2[6]&&(<(x3[6], x2[6]), <(x1[6], 3))=TRUEx1[6]=x1[7]x3[6]=x3[7]x2[6]=x2[7]x4[6]=x4[7]COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7])≥NonInfC∧COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7])≥4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])∧(UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥))



    We simplified constraint (54) using rules (III), (IDP_BOOLEAN) which results in the following new constraint:

    (55)    (<(+(x4[9], 1), x2[6])=TRUE<(x1[6], 3)=TRUECOND_4434_0_TEST_GE1(TRUE, x1[6], +(x4[9], 1), x2[6], x4[6])≥NonInfC∧COND_4434_0_TEST_GE1(TRUE, x1[6], +(x4[9], 1), x2[6], x4[6])≥4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[6]), x1[6], x2[6], +(x4[9], 1), x4[6])∧(UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥))



    We simplified constraint (55) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (56)    (x2[6] + [-2] + [-1]x4[9] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-2)bni_25 + (-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] + [(-1)bni_25]x4[9] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (56) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (57)    (x2[6] + [-2] + [-1]x4[9] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-2)bni_25 + (-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] + [(-1)bni_25]x4[9] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (57) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (58)    (x2[6] + [-2] + [-1]x4[9] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-2)bni_25 + (-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] + [(-1)bni_25]x4[9] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (58) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (59)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (59) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (60)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x4[9] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)


    (61)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x4[9] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (60) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (62)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x4[9] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)


    (63)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x4[9] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (61) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (64)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x4[9] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)


    (65)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x4[9] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)



  • We consider the chain 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10]), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]), COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]) which results in the following constraint:

    (66)    (x1[10]=x1[6]+(x3[10], 1)=x3[6]x2[10]=x2[6]&&(<(x3[6], x2[6]), <(x1[6], 3))=TRUEx1[6]=x1[7]x3[6]=x3[7]x2[6]=x2[7]x4[6]=x4[7]COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7])≥NonInfC∧COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7])≥4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])∧(UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥))



    We simplified constraint (66) using rules (III), (IDP_BOOLEAN) which results in the following new constraint:

    (67)    (<(+(x3[10], 1), x2[6])=TRUE<(x1[6], 3)=TRUECOND_4434_0_TEST_GE1(TRUE, x1[6], +(x3[10], 1), x2[6], x4[6])≥NonInfC∧COND_4434_0_TEST_GE1(TRUE, x1[6], +(x3[10], 1), x2[6], x4[6])≥4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[6]), x1[6], x2[6], +(x3[10], 1), x4[6])∧(UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥))



    We simplified constraint (67) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (68)    (x2[6] + [-2] + [-1]x3[10] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-2)bni_25 + (-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] + [(-1)bni_25]x3[10] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (68) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (69)    (x2[6] + [-2] + [-1]x3[10] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-2)bni_25 + (-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] + [(-1)bni_25]x3[10] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (69) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (70)    (x2[6] + [-2] + [-1]x3[10] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-2)bni_25 + (-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] + [(-1)bni_25]x3[10] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (70) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (71)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (71) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (72)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[10] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)


    (73)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[10] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (72) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (74)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[10] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)


    (75)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[10] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (73) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (76)    (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[10] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)


    (77)    (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[10] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)







For Pair 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]) the following chains were created:
  • We consider the chain COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8]), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]) which results in the following constraint:

    (78)    (4467_0_bubble_Load(x4[7])=1878_0_length_Returnx1[7]=x1[8]x2[7]=x2[8]x3[7]=x3[8]x4[7]=NULLx1[8]=x1[6]+(x3[8], 1)=x3[6]x2[8]=x2[6]4434_0_TEST_GE(x1[6], x3[6], x2[6])≥NonInfC∧4434_0_TEST_GE(x1[6], x3[6], x2[6])≥COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (78) using rules (III), (VII) which results in the following new constraint:

    (79)    (NULL=x54467_0_bubble_Load(x5)=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x3[8], 1), x2[7]), <(x1[7], 3)), x1[7], +(x3[8], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (79) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x5)=1878_0_length_Return which results in the following new constraint:

    (80)    (4388_0_bubble_NULL(x6)=1878_0_length_ReturnNULL=x64434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x3[8], 1), x2[7]), <(x1[7], 3)), x1[7], +(x3[8], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (80) using rule (III) which results in the following new constraint:

    (81)    (4388_0_bubble_NULL(NULL)=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[8], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x3[8], 1), x2[7]), <(x1[7], 3)), x1[7], +(x3[8], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (81) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (82)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x3[8] + [bni_27]x2[7] + [(-1)bni_27]x1[7] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (82) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (83)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x3[8] + [bni_27]x2[7] + [(-1)bni_27]x1[7] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (83) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (84)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x3[8] + [bni_27]x2[7] + [(-1)bni_27]x1[7] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (84) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (85)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_27] = 0∧[bni_27] = 0∧[(-1)bni_27] = 0∧[(-2)bni_27 + (-1)Bound*bni_27] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_28] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9]), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]) which results in the following constraint:

    (86)    (4467_0_bubble_Load(x4[7])=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧x1[7]=x2[9]x2[7]=x3[9]x3[7]=x4[9]x4[7]=java.lang.Object(List(x0[9]))∧x2[9]=x1[6]+(x4[9], 1)=x3[6]x3[9]=x2[6]4434_0_TEST_GE(x1[6], x3[6], x2[6])≥NonInfC∧4434_0_TEST_GE(x1[6], x3[6], x2[6])≥COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (86) using rules (III), (VII) which results in the following new constraint:

    (87)    (java.lang.Object(List(x0[9]))=x74467_0_bubble_Load(x7)=4457_0_bubble_Return(java.lang.Object(List(x0[9]))) ⇒ 4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x4[9], 1), x2[7]), <(x1[7], 3)), x1[7], +(x4[9], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (87) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x7)=4457_0_bubble_Return(java.lang.Object(List(x0[9]))) which results in the following new constraint:

    (88)    (4388_0_bubble_NULL(x8)=4457_0_bubble_Return(java.lang.Object(List(x0[9])))∧java.lang.Object(List(x0[9]))=x84434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x4[9], 1), x2[7]), <(x1[7], 3)), x1[7], +(x4[9], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (88) using rule (III) which results in the following new constraint:

    (89)    (4388_0_bubble_NULL(java.lang.Object(List(x0[9])))=4457_0_bubble_Return(java.lang.Object(List(x0[9]))) ⇒ 4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x4[9], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x4[9], 1), x2[7]), <(x1[7], 3)), x1[7], +(x4[9], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (89) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (90)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x4[9] + [bni_27]x2[7] + [(-1)bni_27]x1[7] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (90) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (91)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x4[9] + [bni_27]x2[7] + [(-1)bni_27]x1[7] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (91) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (92)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x4[9] + [bni_27]x2[7] + [(-1)bni_27]x1[7] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (92) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (93)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_27] = 0∧[bni_27] = 0∧[(-1)bni_27] = 0∧[(-2)bni_27 + (-1)Bound*bni_27] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_28] ≥ 0)



  • We consider the chain COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7]), 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10]), 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6]) which results in the following constraint:

    (94)    (4467_0_bubble_Load(x4[7])=1878_0_length_Returnx1[7]=x1[10]x2[7]=x2[10]x3[7]=x3[10]x4[7]=x4[10]x1[10]=x1[6]+(x3[10], 1)=x3[6]x2[10]=x2[6]4434_0_TEST_GE(x1[6], x3[6], x2[6])≥NonInfC∧4434_0_TEST_GE(x1[6], x3[6], x2[6])≥COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (94) using rules (III), (IV) which results in the following new constraint:

    (95)    (4467_0_bubble_Load(x4[7])=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x3[10], 1), x2[7]), <(x1[7], 3)), x1[7], +(x3[10], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (95) using rule (V) (with possible (I) afterwards) using induction on 4467_0_bubble_Load(x4[7])=1878_0_length_Return which results in the following new constraint:

    (96)    (4388_0_bubble_NULL(x9)=1878_0_length_Return4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥NonInfC∧4434_0_TEST_GE(x1[7], +(x3[10], 1), x2[7])≥COND_4434_0_TEST_GE1(&&(<(+(x3[10], 1), x2[7]), <(x1[7], 3)), x1[7], +(x3[10], 1), x2[7], x4[6])∧(UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥))



    We simplified constraint (96) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (97)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x3[10] + [bni_27]x2[7] + [(-1)bni_27]x1[7] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (97) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (98)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x3[10] + [bni_27]x2[7] + [(-1)bni_27]x1[7] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (98) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (99)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-2)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x3[10] + [bni_27]x2[7] + [(-1)bni_27]x1[7] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (99) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (100)    ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_27] = 0∧[bni_27] = 0∧[(-1)bni_27] = 0∧[(-2)bni_27 + (-1)Bound*bni_27] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_28] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)Bound*bni_19] + [bni_19]x2[6] + [(-1)bni_19]x1[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)Bound*bni_19] + [bni_19]x2[6] + [bni_19]x1[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)Bound*bni_19] + [bni_19]x2[6] + [(-1)bni_19]x1[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])), ≥)∧[(-1)Bound*bni_19] + [bni_19]x2[6] + [bni_19]x1[6] ≥ 0∧[1 + (-1)bso_20] ≥ 0)

  • 4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)Bound*bni_21] + [bni_21]x2[6] + [(-1)bni_21]x1[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)Bound*bni_21] + [bni_21]x2[6] + [bni_21]x1[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)Bound*bni_21] + [bni_21]x2[6] + [(-1)bni_21]x1[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])), ≥)∧[(-1)Bound*bni_21] + [bni_21]x2[6] + [bni_21]x1[6] ≥ 0∧[1 + (-1)bso_22] ≥ 0)

  • 4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)Bound*bni_23] + [bni_23]x2[6] + [(-1)bni_23]x1[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)Bound*bni_23] + [bni_23]x2[6] + [bni_23]x1[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)Bound*bni_23] + [bni_23]x2[6] + [bni_23]x1[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])), ≥)∧[(-1)Bound*bni_23] + [bni_23]x2[6] + [(-1)bni_23]x1[6] ≥ 0∧[1 + (-1)bso_24] ≥ 0)

  • COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[8] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[8] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[8] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[8] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x4[9] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x4[9] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x4[9] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x4[9] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[10] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[10] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x2[6] ≥ 0∧[2] + [-1]x1[6] ≥ 0∧x3[10] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [(-1)bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x2[6] ≥ 0∧[2] + x1[6] ≥ 0∧x3[10] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])), ≥)∧[(-1)Bound*bni_25] + [bni_25]x2[6] + [bni_25]x1[6] ≥ 0∧[(-1)bso_26] ≥ 0)

  • 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])
    • ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_27] = 0∧[bni_27] = 0∧[(-1)bni_27] = 0∧[(-2)bni_27 + (-1)Bound*bni_27] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_28] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_27] = 0∧[bni_27] = 0∧[(-1)bni_27] = 0∧[(-2)bni_27 + (-1)Bound*bni_27] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_28] ≥ 0)
    • ((UIncreasing(COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])), ≥)∧[(-1)bni_27] = 0∧[bni_27] = 0∧[(-1)bni_27] = 0∧[(-2)bni_27 + (-1)Bound*bni_27] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_28] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(4467_0_bubble_Load(x1)) = [-1]   
POL(4388_0_bubble_NULL(x1)) = [-1]   
POL(NULL) = [-1]   
POL(1878_0_length_Return) = [-1]   
POL(java.lang.Object(x1)) = [-1]   
POL(List(x1)) = [-1]   
POL(4443_0_bubble_NONNULL(x1)) = [-1]   
POL(4641_1_bubble_InvokeMethod(x1)) = [-1]   
POL(4457_0_bubble_Return(x1)) = [-1]   
POL(4467_1_TEST_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + x3 + [-1]x2 + [-1]x4   
POL(4434_0_TEST_GE(x1, x2, x3)) = [-1] + [-1]x2 + x3 + [-1]x1   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(COND_4434_0_TEST_GE1(x1, x2, x3, x4, x5)) = [-1] + x4 + [-1]x2 + [-1]x3   
POL(&&(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(3) = [3]   

The following pairs are in P>:

4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])
4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])
4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])

The following pairs are in Pbound:

4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[10], x2[10], x3[10], x4[10]) → 4434_0_TEST_GE(x1[10], +(x3[10], 1), x2[10])
4467_1_TEST_INVOKEMETHOD(4457_0_bubble_Return(java.lang.Object(List(x0[9]))), x2[9], x3[9], x4[9], java.lang.Object(List(x0[9]))) → 4434_0_TEST_GE(x2[9], +(x4[9], 1), x3[9])
4467_1_TEST_INVOKEMETHOD(1878_0_length_Return, x1[8], x2[8], x3[8], NULL) → 4434_0_TEST_GE(x1[8], +(x3[8], 1), x2[8])
COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])

The following pairs are in P:

COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])
4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(&&(<(x3[6], x2[6]), <(x1[6], 3)), x1[6], x3[6], x2[6], x4[6])

There are no usable rules.

(33) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
4467_0_bubble_Load(x0) → 4388_0_bubble_NULL(x0)
4388_0_bubble_NULL(NULL) → 1878_0_length_Return
4388_0_bubble_NULL(java.lang.Object(List(x0))) → 4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))) → 4443_0_bubble_NONNULL(java.lang.Object(List(1878_0_length_Return)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4641_1_bubble_InvokeMethod(4388_0_bubble_NULL(java.lang.Object(List(1878_0_length_Return))))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(1878_0_length_Return)))) → 1878_0_length_Return
4641_1_bubble_InvokeMethod(1878_0_length_Return) → 1878_0_length_Return
4443_0_bubble_NONNULL(java.lang.Object(List(x0))) → 4457_0_bubble_Return(java.lang.Object(List(x0)))

The integer pair graph contains the following rules and edges:
(7): COND_4434_0_TEST_GE1(TRUE, x1[7], x3[7], x2[7], x4[7]) → 4467_1_TEST_INVOKEMETHOD(4467_0_bubble_Load(x4[7]), x1[7], x2[7], x3[7], x4[7])
(6): 4434_0_TEST_GE(x1[6], x3[6], x2[6]) → COND_4434_0_TEST_GE1(x3[6] < x2[6] && x1[6] < 3, x1[6], x3[6], x2[6], x4[6])

(6) -> (7), if (x3[6] < x2[6] && x1[6] < 3x1[6]* x1[7]x3[6]* x3[7]x2[6]* x2[7]x4[6]* x4[7])



The set Q consists of the following terms:
2112_0_length_Load(x0)
4467_0_bubble_Load(x0)
1870_0_length_NONNULL
1924_1_length_InvokeMethod(1878_0_length_Return)
1924_1_length_InvokeMethod(2496_0_length_Return(x0))
Cond_1924_1_length_InvokeMethod(TRUE, 2496_0_length_Return(x0))
4469_1_test_InvokeMethod(1878_0_length_Return, x0)
4388_0_bubble_NULL(NULL)
4388_0_bubble_NULL(java.lang.Object(List(x0)))
4443_0_bubble_NONNULL(java.lang.Object(List(x0)))
4641_1_bubble_InvokeMethod(4457_0_bubble_Return(java.lang.Object(List(1878_0_length_Return))))
4641_1_bubble_InvokeMethod(1878_0_length_Return)

(34) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes.

(35) TRUE

(36) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Test8.main([Ljava/lang/String;)V
SCC calls the following helper methods:
Performed SCC analyses: UsedFieldsAnalysis

(37) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 21 rules for P and 0 rules for R.


P rules:
1413_0_mk_Inc(EOS(STATIC_1413), i414, o472, i414) → 1418_0_mk_LE(EOS(STATIC_1418), +(i414, -1), o472, i414)
1418_0_mk_LE(EOS(STATIC_1418), i424, o472, i440) → 1422_0_mk_LE(EOS(STATIC_1422), i424, o472, i440)
1422_0_mk_LE(EOS(STATIC_1422), i424, o472, i440) → 1426_0_mk_New(EOS(STATIC_1426), i424, o472) | >(i440, 0)
1426_0_mk_New(EOS(STATIC_1426), i424, o472) → 1433_0_mk_Duplicate(EOS(STATIC_1433), i424, o472, java.lang.Object(List(EOC)))
1433_0_mk_Duplicate(EOS(STATIC_1433), i424, o472, java.lang.Object(List(EOC))) → 1439_0_mk_Load(EOS(STATIC_1439), i424, o472, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1439_0_mk_Load(EOS(STATIC_1439), i424, o472, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1447_0_mk_Load(EOS(STATIC_1447), i424, o472, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424)
1447_0_mk_Load(EOS(STATIC_1447), i424, o472, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424) → 1454_0_mk_InvokeMethod(EOS(STATIC_1454), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472)
1454_0_mk_InvokeMethod(EOS(STATIC_1454), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472) → 1459_0_<init>_Load(EOS(STATIC_1459), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), i424, o472)
1459_0_<init>_Load(EOS(STATIC_1459), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), i424, o472) → 1470_0_<init>_InvokeMethod(EOS(STATIC_1470), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)))
1470_0_<init>_InvokeMethod(EOS(STATIC_1470), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC))) → 1475_0_<init>_Load(EOS(STATIC_1475), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), i424, o472)
1475_0_<init>_Load(EOS(STATIC_1475), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), i424, o472) → 1482_0_<init>_Load(EOS(STATIC_1482), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)))
1482_0_<init>_Load(EOS(STATIC_1482), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC))) → 1489_0_<init>_FieldAccess(EOS(STATIC_1489), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), o472, java.lang.Object(List(EOC)), i424)
1489_0_<init>_FieldAccess(EOS(STATIC_1489), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), o472, java.lang.Object(List(EOC)), i424) → 1497_0_<init>_Load(EOS(STATIC_1497), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), o472)
1497_0_<init>_Load(EOS(STATIC_1497), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), o472) → 1502_0_<init>_Load(EOS(STATIC_1502), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, o472, java.lang.Object(List(EOC)))
1502_0_<init>_Load(EOS(STATIC_1502), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, o472, java.lang.Object(List(EOC))) → 1509_0_<init>_FieldAccess(EOS(STATIC_1509), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), o472)
1509_0_<init>_FieldAccess(EOS(STATIC_1509), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472, java.lang.Object(List(EOC)), o472) → 1516_0_<init>_Return(EOS(STATIC_1516), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472)
1516_0_<init>_Return(EOS(STATIC_1516), i424, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i424, o472) → 1520_0_mk_Store(EOS(STATIC_1520), i424, java.lang.Object(List(EOC)))
1520_0_mk_Store(EOS(STATIC_1520), i424, java.lang.Object(List(EOC))) → 1525_0_mk_JMP(EOS(STATIC_1525), i424, java.lang.Object(List(EOC)))
1525_0_mk_JMP(EOS(STATIC_1525), i424, java.lang.Object(List(EOC))) → 1532_0_mk_Load(EOS(STATIC_1532), i424, java.lang.Object(List(EOC)))
1532_0_mk_Load(EOS(STATIC_1532), i424, java.lang.Object(List(EOC))) → 1409_0_mk_Load(EOS(STATIC_1409), i424, java.lang.Object(List(EOC)))
1409_0_mk_Load(EOS(STATIC_1409), i414, o472) → 1413_0_mk_Inc(EOS(STATIC_1413), i414, o472, i414)
R rules:

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
1413_0_mk_Inc(EOS(STATIC_1413), x0, x1, x0) → 1413_0_mk_Inc(EOS(STATIC_1413), +(x0, -1), java.lang.Object(List(EOC)), +(x0, -1)) | >(x0, 0)
R rules:

Filtered ground terms:



1413_0_mk_Inc(x1, x2, x3, x4) → 1413_0_mk_Inc(x2, x3, x4)
List(x1) → List
java.lang.Object(x1) → java.lang.Object
EOS(x1) → EOS
Cond_1413_0_mk_Inc(x1, x2, x3, x4, x5) → Cond_1413_0_mk_Inc(x1, x3, x4, x5)

Filtered duplicate args:



1413_0_mk_Inc(x1, x2, x3) → 1413_0_mk_Inc(x2, x3)
Cond_1413_0_mk_Inc(x1, x2, x3, x4) → Cond_1413_0_mk_Inc(x1, x3, x4)

Filtered unneeded arguments:



Cond_1413_0_mk_Inc(x1, x2, x3) → Cond_1413_0_mk_Inc(x1, x3)
1413_0_mk_Inc(x1, x2) → 1413_0_mk_Inc(x2)

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
1413_0_mk_Inc(x0) → 1413_0_mk_Inc(+(x0, -1)) | >(x0, 0)
R rules:

Finished conversion. Obtained 2 rules for P and 0 rules for R. System has predefined symbols.


P rules:
1413_0_MK_INC(x0) → COND_1413_0_MK_INC(>(x0, 0), x0)
COND_1413_0_MK_INC(TRUE, x0) → 1413_0_MK_INC(+(x0, -1))
R rules:

(38) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 1413_0_MK_INC(x0[0]) → COND_1413_0_MK_INC(x0[0] > 0, x0[0])
(1): COND_1413_0_MK_INC(TRUE, x0[1]) → 1413_0_MK_INC(x0[1] + -1)

(0) -> (1), if (x0[0] > 0x0[0]* x0[1])


(1) -> (0), if (x0[1] + -1* x0[0])



The set Q is empty.

(39) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@7c6067f1 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 1413_0_MK_INC(x0) → COND_1413_0_MK_INC(>(x0, 0), x0) the following chains were created:
  • We consider the chain 1413_0_MK_INC(x0[0]) → COND_1413_0_MK_INC(>(x0[0], 0), x0[0]), COND_1413_0_MK_INC(TRUE, x0[1]) → 1413_0_MK_INC(+(x0[1], -1)) which results in the following constraint:

    (1)    (>(x0[0], 0)=TRUEx0[0]=x0[1]1413_0_MK_INC(x0[0])≥NonInfC∧1413_0_MK_INC(x0[0])≥COND_1413_0_MK_INC(>(x0[0], 0), x0[0])∧(UIncreasing(COND_1413_0_MK_INC(>(x0[0], 0), x0[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x0[0], 0)=TRUE1413_0_MK_INC(x0[0])≥NonInfC∧1413_0_MK_INC(x0[0])≥COND_1413_0_MK_INC(>(x0[0], 0), x0[0])∧(UIncreasing(COND_1413_0_MK_INC(>(x0[0], 0), x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1413_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1413_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1413_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_1413_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8 + (2)bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)







For Pair COND_1413_0_MK_INC(TRUE, x0) → 1413_0_MK_INC(+(x0, -1)) the following chains were created:
  • We consider the chain COND_1413_0_MK_INC(TRUE, x0[1]) → 1413_0_MK_INC(+(x0[1], -1)) which results in the following constraint:

    (7)    (COND_1413_0_MK_INC(TRUE, x0[1])≥NonInfC∧COND_1413_0_MK_INC(TRUE, x0[1])≥1413_0_MK_INC(+(x0[1], -1))∧(UIncreasing(1413_0_MK_INC(+(x0[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(1413_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(1413_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(1413_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(1413_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧0 = 0∧[2 + (-1)bso_11] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1413_0_MK_INC(x0) → COND_1413_0_MK_INC(>(x0, 0), x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_1413_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8 + (2)bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)

  • COND_1413_0_MK_INC(TRUE, x0) → 1413_0_MK_INC(+(x0, -1))
    • ((UIncreasing(1413_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧0 = 0∧[2 + (-1)bso_11] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(1413_0_MK_INC(x1)) = [2]x1   
POL(COND_1413_0_MK_INC(x1, x2)) = [2]x2   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   

The following pairs are in P>:

COND_1413_0_MK_INC(TRUE, x0[1]) → 1413_0_MK_INC(+(x0[1], -1))

The following pairs are in Pbound:

1413_0_MK_INC(x0[0]) → COND_1413_0_MK_INC(>(x0[0], 0), x0[0])

The following pairs are in P:

1413_0_MK_INC(x0[0]) → COND_1413_0_MK_INC(>(x0[0], 0), x0[0])

There are no usable rules.

(40) Complex Obligation (AND)

(41) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 1413_0_MK_INC(x0[0]) → COND_1413_0_MK_INC(x0[0] > 0, x0[0])


The set Q is empty.

(42) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(43) TRUE

(44) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_1413_0_MK_INC(TRUE, x0[1]) → 1413_0_MK_INC(x0[1] + -1)


The set Q is empty.

(45) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(46) TRUE

(47) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Test8.main([Ljava/lang/String;)V
SCC calls the following helper methods:
Performed SCC analyses: UsedFieldsAnalysis

(48) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 21 rules for P and 0 rules for R.


P rules:
1101_0_mk_Inc(EOS(STATIC_1101), i253, o262, i253) → 1104_0_mk_LE(EOS(STATIC_1104), +(i253, -1), o262, i253)
1104_0_mk_LE(EOS(STATIC_1104), i262, o262, i272) → 1107_0_mk_LE(EOS(STATIC_1107), i262, o262, i272)
1107_0_mk_LE(EOS(STATIC_1107), i262, o262, i272) → 1110_0_mk_New(EOS(STATIC_1110), i262, o262) | >(i272, 0)
1110_0_mk_New(EOS(STATIC_1110), i262, o262) → 1114_0_mk_Duplicate(EOS(STATIC_1114), i262, o262, java.lang.Object(List(EOC)))
1114_0_mk_Duplicate(EOS(STATIC_1114), i262, o262, java.lang.Object(List(EOC))) → 1117_0_mk_Load(EOS(STATIC_1117), i262, o262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1117_0_mk_Load(EOS(STATIC_1117), i262, o262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1121_0_mk_Load(EOS(STATIC_1121), i262, o262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262)
1121_0_mk_Load(EOS(STATIC_1121), i262, o262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262) → 1124_0_mk_InvokeMethod(EOS(STATIC_1124), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262)
1124_0_mk_InvokeMethod(EOS(STATIC_1124), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262) → 1127_0_<init>_Load(EOS(STATIC_1127), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), i262, o262)
1127_0_<init>_Load(EOS(STATIC_1127), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), i262, o262) → 1133_0_<init>_InvokeMethod(EOS(STATIC_1133), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)))
1133_0_<init>_InvokeMethod(EOS(STATIC_1133), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC))) → 1137_0_<init>_Load(EOS(STATIC_1137), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), i262, o262)
1137_0_<init>_Load(EOS(STATIC_1137), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), i262, o262) → 1139_0_<init>_Load(EOS(STATIC_1139), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)))
1139_0_<init>_Load(EOS(STATIC_1139), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC))) → 1144_0_<init>_FieldAccess(EOS(STATIC_1144), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), o262, java.lang.Object(List(EOC)), i262)
1144_0_<init>_FieldAccess(EOS(STATIC_1144), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), o262, java.lang.Object(List(EOC)), i262) → 1149_0_<init>_Load(EOS(STATIC_1149), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), o262)
1149_0_<init>_Load(EOS(STATIC_1149), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), o262) → 1153_0_<init>_Load(EOS(STATIC_1153), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, o262, java.lang.Object(List(EOC)))
1153_0_<init>_Load(EOS(STATIC_1153), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, o262, java.lang.Object(List(EOC))) → 1158_0_<init>_FieldAccess(EOS(STATIC_1158), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), o262)
1158_0_<init>_FieldAccess(EOS(STATIC_1158), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262, java.lang.Object(List(EOC)), o262) → 1165_0_<init>_Return(EOS(STATIC_1165), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262)
1165_0_<init>_Return(EOS(STATIC_1165), i262, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i262, o262) → 1171_0_mk_Store(EOS(STATIC_1171), i262, java.lang.Object(List(EOC)))
1171_0_mk_Store(EOS(STATIC_1171), i262, java.lang.Object(List(EOC))) → 1176_0_mk_JMP(EOS(STATIC_1176), i262, java.lang.Object(List(EOC)))
1176_0_mk_JMP(EOS(STATIC_1176), i262, java.lang.Object(List(EOC))) → 1185_0_mk_Load(EOS(STATIC_1185), i262, java.lang.Object(List(EOC)))
1185_0_mk_Load(EOS(STATIC_1185), i262, java.lang.Object(List(EOC))) → 1098_0_mk_Load(EOS(STATIC_1098), i262, java.lang.Object(List(EOC)))
1098_0_mk_Load(EOS(STATIC_1098), i253, o262) → 1101_0_mk_Inc(EOS(STATIC_1101), i253, o262, i253)
R rules:

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
1101_0_mk_Inc(EOS(STATIC_1101), x0, x1, x0) → 1101_0_mk_Inc(EOS(STATIC_1101), +(x0, -1), java.lang.Object(List(EOC)), +(x0, -1)) | >(x0, 0)
R rules:

Filtered ground terms:



1101_0_mk_Inc(x1, x2, x3, x4) → 1101_0_mk_Inc(x2, x3, x4)
List(x1) → List
java.lang.Object(x1) → java.lang.Object
EOS(x1) → EOS
Cond_1101_0_mk_Inc(x1, x2, x3, x4, x5) → Cond_1101_0_mk_Inc(x1, x3, x4, x5)

Filtered duplicate args:



1101_0_mk_Inc(x1, x2, x3) → 1101_0_mk_Inc(x2, x3)
Cond_1101_0_mk_Inc(x1, x2, x3, x4) → Cond_1101_0_mk_Inc(x1, x3, x4)

Filtered unneeded arguments:



Cond_1101_0_mk_Inc(x1, x2, x3) → Cond_1101_0_mk_Inc(x1, x3)
1101_0_mk_Inc(x1, x2) → 1101_0_mk_Inc(x2)

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
1101_0_mk_Inc(x0) → 1101_0_mk_Inc(+(x0, -1)) | >(x0, 0)
R rules:

Finished conversion. Obtained 2 rules for P and 0 rules for R. System has predefined symbols.


P rules:
1101_0_MK_INC(x0) → COND_1101_0_MK_INC(>(x0, 0), x0)
COND_1101_0_MK_INC(TRUE, x0) → 1101_0_MK_INC(+(x0, -1))
R rules:

(49) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 1101_0_MK_INC(x0[0]) → COND_1101_0_MK_INC(x0[0] > 0, x0[0])
(1): COND_1101_0_MK_INC(TRUE, x0[1]) → 1101_0_MK_INC(x0[1] + -1)

(0) -> (1), if (x0[0] > 0x0[0]* x0[1])


(1) -> (0), if (x0[1] + -1* x0[0])



The set Q is empty.

(50) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@7c6067f1 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 1101_0_MK_INC(x0) → COND_1101_0_MK_INC(>(x0, 0), x0) the following chains were created:
  • We consider the chain 1101_0_MK_INC(x0[0]) → COND_1101_0_MK_INC(>(x0[0], 0), x0[0]), COND_1101_0_MK_INC(TRUE, x0[1]) → 1101_0_MK_INC(+(x0[1], -1)) which results in the following constraint:

    (1)    (>(x0[0], 0)=TRUEx0[0]=x0[1]1101_0_MK_INC(x0[0])≥NonInfC∧1101_0_MK_INC(x0[0])≥COND_1101_0_MK_INC(>(x0[0], 0), x0[0])∧(UIncreasing(COND_1101_0_MK_INC(>(x0[0], 0), x0[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x0[0], 0)=TRUE1101_0_MK_INC(x0[0])≥NonInfC∧1101_0_MK_INC(x0[0])≥COND_1101_0_MK_INC(>(x0[0], 0), x0[0])∧(UIncreasing(COND_1101_0_MK_INC(>(x0[0], 0), x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1101_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1101_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1101_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_1101_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8 + (2)bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)







For Pair COND_1101_0_MK_INC(TRUE, x0) → 1101_0_MK_INC(+(x0, -1)) the following chains were created:
  • We consider the chain COND_1101_0_MK_INC(TRUE, x0[1]) → 1101_0_MK_INC(+(x0[1], -1)) which results in the following constraint:

    (7)    (COND_1101_0_MK_INC(TRUE, x0[1])≥NonInfC∧COND_1101_0_MK_INC(TRUE, x0[1])≥1101_0_MK_INC(+(x0[1], -1))∧(UIncreasing(1101_0_MK_INC(+(x0[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(1101_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(1101_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(1101_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(1101_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧0 = 0∧[2 + (-1)bso_11] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1101_0_MK_INC(x0) → COND_1101_0_MK_INC(>(x0, 0), x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_1101_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8 + (2)bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)

  • COND_1101_0_MK_INC(TRUE, x0) → 1101_0_MK_INC(+(x0, -1))
    • ((UIncreasing(1101_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧0 = 0∧[2 + (-1)bso_11] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(1101_0_MK_INC(x1)) = [2]x1   
POL(COND_1101_0_MK_INC(x1, x2)) = [2]x2   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   

The following pairs are in P>:

COND_1101_0_MK_INC(TRUE, x0[1]) → 1101_0_MK_INC(+(x0[1], -1))

The following pairs are in Pbound:

1101_0_MK_INC(x0[0]) → COND_1101_0_MK_INC(>(x0[0], 0), x0[0])

The following pairs are in P:

1101_0_MK_INC(x0[0]) → COND_1101_0_MK_INC(>(x0[0], 0), x0[0])

There are no usable rules.

(51) Complex Obligation (AND)

(52) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 1101_0_MK_INC(x0[0]) → COND_1101_0_MK_INC(x0[0] > 0, x0[0])


The set Q is empty.

(53) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(54) TRUE

(55) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_1101_0_MK_INC(TRUE, x0[1]) → 1101_0_MK_INC(x0[1] + -1)


The set Q is empty.

(56) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(57) TRUE

(58) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Test8.main([Ljava/lang/String;)V
SCC calls the following helper methods:
Performed SCC analyses: UsedFieldsAnalysis

(59) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 21 rules for P and 0 rules for R.


P rules:
483_0_mk_Inc(EOS(STATIC_483), i72, o67, i72) → 486_0_mk_LE(EOS(STATIC_486), +(i72, -1), o67, i72)
486_0_mk_LE(EOS(STATIC_486), i75, o67, i79) → 489_0_mk_LE(EOS(STATIC_489), i75, o67, i79)
489_0_mk_LE(EOS(STATIC_489), i75, o67, i79) → 493_0_mk_New(EOS(STATIC_493), i75, o67) | >(i79, 0)
493_0_mk_New(EOS(STATIC_493), i75, o67) → 497_0_mk_Duplicate(EOS(STATIC_497), i75, o67, java.lang.Object(List(EOC)))
497_0_mk_Duplicate(EOS(STATIC_497), i75, o67, java.lang.Object(List(EOC))) → 501_0_mk_Load(EOS(STATIC_501), i75, o67, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
501_0_mk_Load(EOS(STATIC_501), i75, o67, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 506_0_mk_Load(EOS(STATIC_506), i75, o67, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75)
506_0_mk_Load(EOS(STATIC_506), i75, o67, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75) → 510_0_mk_InvokeMethod(EOS(STATIC_510), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67)
510_0_mk_InvokeMethod(EOS(STATIC_510), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67) → 514_0_<init>_Load(EOS(STATIC_514), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), i75, o67)
514_0_<init>_Load(EOS(STATIC_514), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), i75, o67) → 520_0_<init>_InvokeMethod(EOS(STATIC_520), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)))
520_0_<init>_InvokeMethod(EOS(STATIC_520), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC))) → 523_0_<init>_Load(EOS(STATIC_523), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), i75, o67)
523_0_<init>_Load(EOS(STATIC_523), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), i75, o67) → 526_0_<init>_Load(EOS(STATIC_526), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)))
526_0_<init>_Load(EOS(STATIC_526), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC))) → 532_0_<init>_FieldAccess(EOS(STATIC_532), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), o67, java.lang.Object(List(EOC)), i75)
532_0_<init>_FieldAccess(EOS(STATIC_532), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), o67, java.lang.Object(List(EOC)), i75) → 537_0_<init>_Load(EOS(STATIC_537), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), o67)
537_0_<init>_Load(EOS(STATIC_537), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), o67) → 542_0_<init>_Load(EOS(STATIC_542), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, o67, java.lang.Object(List(EOC)))
542_0_<init>_Load(EOS(STATIC_542), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, o67, java.lang.Object(List(EOC))) → 545_0_<init>_FieldAccess(EOS(STATIC_545), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), o67)
545_0_<init>_FieldAccess(EOS(STATIC_545), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67, java.lang.Object(List(EOC)), o67) → 552_0_<init>_Return(EOS(STATIC_552), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67)
552_0_<init>_Return(EOS(STATIC_552), i75, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i75, o67) → 558_0_mk_Store(EOS(STATIC_558), i75, java.lang.Object(List(EOC)))
558_0_mk_Store(EOS(STATIC_558), i75, java.lang.Object(List(EOC))) → 566_0_mk_JMP(EOS(STATIC_566), i75, java.lang.Object(List(EOC)))
566_0_mk_JMP(EOS(STATIC_566), i75, java.lang.Object(List(EOC))) → 582_0_mk_Load(EOS(STATIC_582), i75, java.lang.Object(List(EOC)))
582_0_mk_Load(EOS(STATIC_582), i75, java.lang.Object(List(EOC))) → 479_0_mk_Load(EOS(STATIC_479), i75, java.lang.Object(List(EOC)))
479_0_mk_Load(EOS(STATIC_479), i72, o67) → 483_0_mk_Inc(EOS(STATIC_483), i72, o67, i72)
R rules:

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
483_0_mk_Inc(EOS(STATIC_483), x0, x1, x0) → 483_0_mk_Inc(EOS(STATIC_483), +(x0, -1), java.lang.Object(List(EOC)), +(x0, -1)) | >(x0, 0)
R rules:

Filtered ground terms:



483_0_mk_Inc(x1, x2, x3, x4) → 483_0_mk_Inc(x2, x3, x4)
List(x1) → List
java.lang.Object(x1) → java.lang.Object
EOS(x1) → EOS
Cond_483_0_mk_Inc(x1, x2, x3, x4, x5) → Cond_483_0_mk_Inc(x1, x3, x4, x5)

Filtered duplicate args:



483_0_mk_Inc(x1, x2, x3) → 483_0_mk_Inc(x2, x3)
Cond_483_0_mk_Inc(x1, x2, x3, x4) → Cond_483_0_mk_Inc(x1, x3, x4)

Filtered unneeded arguments:



Cond_483_0_mk_Inc(x1, x2, x3) → Cond_483_0_mk_Inc(x1, x3)
483_0_mk_Inc(x1, x2) → 483_0_mk_Inc(x2)

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
483_0_mk_Inc(x0) → 483_0_mk_Inc(+(x0, -1)) | >(x0, 0)
R rules:

Finished conversion. Obtained 2 rules for P and 0 rules for R. System has predefined symbols.


P rules:
483_0_MK_INC(x0) → COND_483_0_MK_INC(>(x0, 0), x0)
COND_483_0_MK_INC(TRUE, x0) → 483_0_MK_INC(+(x0, -1))
R rules:

(60) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 483_0_MK_INC(x0[0]) → COND_483_0_MK_INC(x0[0] > 0, x0[0])
(1): COND_483_0_MK_INC(TRUE, x0[1]) → 483_0_MK_INC(x0[1] + -1)

(0) -> (1), if (x0[0] > 0x0[0]* x0[1])


(1) -> (0), if (x0[1] + -1* x0[0])



The set Q is empty.

(61) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@7c6067f1 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 483_0_MK_INC(x0) → COND_483_0_MK_INC(>(x0, 0), x0) the following chains were created:
  • We consider the chain 483_0_MK_INC(x0[0]) → COND_483_0_MK_INC(>(x0[0], 0), x0[0]), COND_483_0_MK_INC(TRUE, x0[1]) → 483_0_MK_INC(+(x0[1], -1)) which results in the following constraint:

    (1)    (>(x0[0], 0)=TRUEx0[0]=x0[1]483_0_MK_INC(x0[0])≥NonInfC∧483_0_MK_INC(x0[0])≥COND_483_0_MK_INC(>(x0[0], 0), x0[0])∧(UIncreasing(COND_483_0_MK_INC(>(x0[0], 0), x0[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x0[0], 0)=TRUE483_0_MK_INC(x0[0])≥NonInfC∧483_0_MK_INC(x0[0])≥COND_483_0_MK_INC(>(x0[0], 0), x0[0])∧(UIncreasing(COND_483_0_MK_INC(>(x0[0], 0), x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_483_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_483_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_483_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_483_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8 + (2)bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)







For Pair COND_483_0_MK_INC(TRUE, x0) → 483_0_MK_INC(+(x0, -1)) the following chains were created:
  • We consider the chain COND_483_0_MK_INC(TRUE, x0[1]) → 483_0_MK_INC(+(x0[1], -1)) which results in the following constraint:

    (7)    (COND_483_0_MK_INC(TRUE, x0[1])≥NonInfC∧COND_483_0_MK_INC(TRUE, x0[1])≥483_0_MK_INC(+(x0[1], -1))∧(UIncreasing(483_0_MK_INC(+(x0[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(483_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(483_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(483_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(483_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧0 = 0∧[2 + (-1)bso_11] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 483_0_MK_INC(x0) → COND_483_0_MK_INC(>(x0, 0), x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_483_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8 + (2)bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)

  • COND_483_0_MK_INC(TRUE, x0) → 483_0_MK_INC(+(x0, -1))
    • ((UIncreasing(483_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧0 = 0∧[2 + (-1)bso_11] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(483_0_MK_INC(x1)) = [2]x1   
POL(COND_483_0_MK_INC(x1, x2)) = [2]x2   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   

The following pairs are in P>:

COND_483_0_MK_INC(TRUE, x0[1]) → 483_0_MK_INC(+(x0[1], -1))

The following pairs are in Pbound:

483_0_MK_INC(x0[0]) → COND_483_0_MK_INC(>(x0[0], 0), x0[0])

The following pairs are in P:

483_0_MK_INC(x0[0]) → COND_483_0_MK_INC(>(x0[0], 0), x0[0])

There are no usable rules.

(62) Complex Obligation (AND)

(63) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 483_0_MK_INC(x0[0]) → COND_483_0_MK_INC(x0[0] > 0, x0[0])


The set Q is empty.

(64) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(65) TRUE

(66) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_483_0_MK_INC(TRUE, x0[1]) → 483_0_MK_INC(x0[1] + -1)


The set Q is empty.

(67) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(68) TRUE